在開發過程中,我們經常需要把 JSON 字符串格式轉換成數組對象。下面我們就來看一下如何使用 C 語言進行這個轉換。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main(void) { char json_string[] = "[{ \"name\": \"John\", \"age\": 35 }, { \"name\": \"Mary\", \"age\": 28 }]"; json_error_t error; json_t *root = json_loads(json_string, 0, &error); if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } if (!json_is_array(root)) { fprintf(stderr, "error: root is not an array\n"); json_decref(root); return 1; } size_t i; json_t *element; json_array_foreach(root, i, element) { if (!json_is_object(element)) { fprintf(stderr, "error: element %d is not an object\n", (int)(i + 1)); json_decref(root); return 1; } const char *name; json_t *value; json_object_foreach(element, name, value) { if (!json_is_string(value)) { fprintf(stderr, "error: value of %s is not a string\n", name); json_decref(root); return 1; } printf("%s: %s\n", name, json_string_value(value)); } } json_decref(root); return 0; }
代碼中我們使用了 C 語言中的jansson
庫來解析 JSON 字符串。我們首先加載 JSON 字符串并存儲在root
中,然后判斷讀取的 JSON 數據是否是一個數組對象。如果不是,我們就拋出一個錯誤。接著,我們遍歷數組中的每個元素,再次判斷它們是否都是對象。如果一切正常,我們就可以讀取每個元素的屬性并打印到控制臺上。
注:以上代碼需要在編譯時鏈接 jansson 庫,否則會編譯錯誤。
上一篇python 路人甲
下一篇C json字符串分割