在C語言中解析JSON數據列表(datalist)非常常見。下面來講述一下如何在C語言中解析JSON數據列表。
#include <stdio.h> #include <jansson.h> int main(int argc, char **argv) { char *input_json = "[{\"key1\":\"value1\", \"key2\":\"value2\"}, {\"key1\":\"value3\", \"key2\":\"value4\"}]"; json_t *root; json_error_t error; root = json_loads(input_json, 0, &error); if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } int index; json_t *element; json_array_foreach(root, index, element) { json_t *value; const char *key; json_object_foreach(element, key, value) { const char *string_value = json_string_value(value); printf("%s: %s\n", key, string_value); } } json_decref(root); return 0; }
本文的代碼使用了jansson庫來解析JSON數據列表。先定義一個字符串的JSON,然后傳入json_loads來解析JSON數據,如果出錯會返回NULL并輸出錯誤信息。接著在json_array_foreach循環里遍歷datalist,逐個解析json子對象的值,再遍歷json_object_foreach循環來解析json子對象的鍵值對。最后使用json_decref來釋放內存。