C语言中如何将json字符串进行解析和操作呢?
#include <stdio.h> #include <jansson.h> int main() { char *json_data = "{\r\n \"name\":\"Tom\",\r\n \"age\":18,\r\n \"hobby\":[\"reading\",\"music\",\"sports\"]\r\n}"; json_error_t json_error; json_t *json_root = json_loads(json_data, JSON_DECODE_ANY, &json_error); if (!json_root) { printf("json_string error: on line %d: %s\n", json_error.line, json_error.text); } else { json_t *json_name = json_object_get(json_root, "name"); const char *name = json_string_value(json_name); printf("name=%s\n", name); json_t *json_age = json_object_get(json_root, "age"); int age = json_integer_value(json_age); printf("age=%d\n", age); json_t *json_hobby = json_object_get(json_root, "hobby"); int hobby_size = json_array_size(json_hobby); printf("hobby size=%d\n", hobby_size); for (int i = 0; i < hobby_size; ++i) { json_t *json_hobby_item = json_array_get(json_hobby, i); const char *hobby = json_string_value(json_hobby_item); printf("hobby=%s\n", hobby); } json_decref(json_root); } return 0; }
以上代码演示了如何使用c语言中的json-c库进行json字符串的解析和操作。需要注意的是,我们在解析后一定要记得使用函数 json_decref 释放掉 json_root 所占用的内存。