json不解释了。C下json操作的库也有好多。比较习惯了json-glib。
Json-glib:c下序列化的一个库。基于glib,可以解析并生成json文件。
下载:
包含头文件:#include
编译时加:`pkg-config
--cflags --libs json-glib-1.0`
其中主要提供三种基本类型:JsonNode
JsonArray JsonObject
JsonObject
就是Json中的对象。包含一个或多个健值对。比如{“name”:”john”,
“age”:13}
也可以{“name”:”john”,
“age”:23, “frieds”:[{“name”:”lili”},{“name”:”mark”}],
像这样包含数组。
JsonArray为数组:可以直接包含基本类型如整形,字符串,也可像上面”friends”那样包含几个object
JsonNode:
可以包含认可基本类型,或者是数组,或者对象。一般用在生成Json数据流的时候需要指定一个根结点。此时可把它们装在jsonnode中。
- //generate
- int main(int argc, char* argv[])
- {
- g_type_init();
- JsonObject *obj = json_object_new();
- json_object_set_string_member(obj, "name", "john");
- json_object_set_int_member(obj, "age", 18);
-
- JsonArray *arr = json_array_new();
- json_array_add_string_element(arr, "lily");
- json_array_add_string_element(arr, "mark");
- json_object_set_array_member(obj, "friends", arr);
- //generate
- JsonGenerator *g = json_generator_new();
- JsonNode *root = json_node_new(JSON_NODE_OBJECT);
- json_node_set_object(root, obj);
- json_generator_set_root(g, root);
- json_generator_to_file(g, "ex.json", NULL);
- return 0;
- }
- //prase
- int main(int argc, char* argv[])
- {
- g_type_init();
- JsonParser *p = json_parser_new();
- gboolean ret;
- ret = json_parser_load_from_file(parser, fill_name, NULL);
- if (!ret)
- {…}
- JsonNode *root = json_node_new(JSON_NODE_OBJECT);
- root = json_parser_get_root(parse);
- JsonObject *obj = json_object_new();
- obj = json_node_get_object(root);
- // 以下可对obj进行get操作
- …
- return 0;
- }
阅读(4260) | 评论(0) | 转发(0) |