JSON是一种轻量级的数据交换格式,它可以在不同的编程语言之间传递数据。C语言也可以使用JSON数据,通过Json-C这个库。
{ "name": "张三", "age": 25, "education": [ { "school": "清华大学", "major": "计算机科学与技术" }, { "school": "北京大学", "major": "管理学" } ] }
在使用Json-C库时,可以首先把JSON数据的内容读入一个json_object对象中:
json_object *jobj; jobj = json_tokener_parse(json_data);
然后可以通过object_object_get函数获取JSON数据中的某个键值对,或者使用json_object_object_foreach函数遍历整个JSON数据:
json_object *name; name = json_object_object_get(jobj, "name"); printf("Name: %s\n", json_object_get_string(name)); json_object *education; json_object_object_get_ex(jobj, "education", &education); int arraylen = json_object_array_length(education); for (int i = 0; i< arraylen; i++) { json_object *edu_item = json_object_array_get_idx(education, i); json_object *school; json_object_object_get_ex(edu_item, "school", &school); printf("Education %d - School: %s\n", i+1, json_object_get_string(school)); json_object *major; json_object_object_get_ex(edu_item, "major", &major); printf("Education %d - Major: %s\n", i+1, json_object_get_string(major)); }
最后使用json_object_put函数释放掉json_object对象:
json_object_put(jobj);
Json-C库提供了一种简单实用的方式,使得C语言可以方便地处理JSON数据,这在需要跨语言进行数据交换的时候,非常有用。