用libjson-glib处理json数据
2015-09-06 14:58
666 查看
json是一个轻量级的数据交换格式,在我们的一些大型程序时,可以用它来存储一些数据信息。前一篇演示了nodejs解析json的过程,今天我们要用我们传统的c语言来处理。
要用c语言来处理我们就需要依赖一些额外的库,虽然处理json的c库很多,但是今天我们就选择libjson-glib.
第一,在ubuntu14.04 安装libjson-glib
$ sudo apt-get install libjson-glib-1.0-0 libjson-glib-dev
第二,准备json测试文件, test.json:
第三,创建main.c 来处理json文件
第四,编译并运行
$ gcc -o testjson main.c `pkg-config --cflags --libs json-glib-1.0`
$ testjson test.json
** Message: typename:gchararray
** Message: name:wanger
** Message: typename:gchararray
** Message: birth:1999
要用c语言来处理我们就需要依赖一些额外的库,虽然处理json的c库很多,但是今天我们就选择libjson-glib.
第一,在ubuntu14.04 安装libjson-glib
$ sudo apt-get install libjson-glib-1.0-0 libjson-glib-dev
第二,准备json测试文件, test.json:
{ "person": { "name": "wanger", "birth": "1999" } }
第三,创建main.c 来处理json文件
/*gcc -o testjson main.c `pkg-config --cflags --libs json-glib-1.0` */ #include <json-glib/json-glib.h> static void print_cb(JsonObject *obj, const gchar *key, JsonNode *val, gpointer user_data) { gchar *rel_val = ""; GType type = json_node_get_value_type(val); g_message("typename:%s", g_type_name(type)); if (g_type_is_a(type, G_TYPE_STRING)) { rel_val =(gchar *)json_node_get_string(val); } g_message("%s:%s", key, rel_val); } int main(int argc, char *argv[]) { if (argc < 2) { g_error("Usage:\n\t%s <json_path>", argv[0]); return 1; } JsonParser *parser = json_parser_new(); GError *error = NULL; json_parser_load_from_file(parser, argv[1], &error); if (error) { g_error("Unable to parse %s: %s", argv[1], error->message); g_error_free(error); g_object_unref(parser); return 1; } JsonNode *root = json_parser_get_root(parser); JsonObject *root_obj = json_node_get_object(root); if (json_object_has_member(root_obj, "person")) { JsonObject *person = json_object_get_object_member(root_obj, "pe rson"); json_object_foreach_member(person, print_cb, NULL); } g_object_unref(parser); return 0; }
第四,编译并运行
$ gcc -o testjson main.c `pkg-config --cflags --libs json-glib-1.0`
$ testjson test.json
** Message: typename:gchararray
** Message: name:wanger
** Message: typename:gchararray
** Message: birth:1999
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- XML 与 JSON 优劣对比
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- newtonsoft.json解析天气数据出错解决方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象