C语言 JSON 解析库 - MJSON使用介绍
MJSON 是使用 ISO C 标准库开发的 json 解析库。
下载地址:
http://www.linuxpig.com/softwares/mjson/mjson-0.9.tar.bz2
安装:
解压出来,然后直接包含 json.h 就可以了。
下面是几个官方给出的几个例子,由于直接拷贝过来编译没通过,做了一些修改,详见注释部分。
【mjson例一】
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include "json.h" int main (void) { char *text; json_t *root, *entry, *label, *value; setlocale (LC_ALL, "");//设为系统默认地域信息 // creates the root node root = json_new_object(); // create an entry node entry = json_new_object(); // 第一部分,打印结果: // {"entry":{"name":"Andew","phone":"555 123 456"}} // insert the first label-value pair label = json_new_string("name"); value = json_new_string("Andew"); json_insert_child(label, value); json_insert_child(entry, label); // insert the second label-value pair label = json_new_string("phone"); value = json_new_string("555 123 456"); json_insert_child(label, value); json_insert_child(entry, label); // inserts that object as a value in a label-value pair label = json_new_string("entry"); json_insert_child(label, entry); // inserts that label-value pair into the root object json_insert_child(root, label); // print the result json_tree_to_string(root, &text); printf("%s\n",text); // clean up free(text); json_free_value(&root); //打印第二部分,数组示例, //结果: // ["test1","test2",109] root = json_new_array(); label = json_new_string("test1"); json_insert_child(root,label); value = json_new_string("test2"); json_insert_child(root,value); value = json_new_number("109"); json_insert_child(root,value); json_tree_to_string(root,&text); printf("%s\n",text); // clean up free(text); json_free_value(&root); return EXIT_SUCCESS; }【mjson例二】
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include "json.h" json_t *new_entry(char *name, char *phone) { json_t *entry, *label, *value; // create an entry node entry = json_new_object(); // insert the first label-value pair label = json_new_string("name"); value = json_new_string("Andew"); json_insert_child(label, value); json_insert_child(entry, label); // insert the second label-value pair label = json_new_string("phone"); value = json_new_string("555 123 456"); json_insert_child(label, value); json_insert_child(entry, label); // inserts that object as a value in a label-value pair label = json_new_string("entry"); json_insert_child(label, entry); return label; } int main (void) { setlocale (LC_ALL, "");//设置为系统默认的地域信息 json_t *root, *subtree; // creates the root node root = json_new_object(); // creates the desired MJSON document subtree subtree = new_entry("Andrew", "555 123 456"); // inserts the subtree into the root object json_insert_child(root, subtree); // print the result char *text; json_tree_to_string(root, &text); printf("%s\n",text); //官方例子中为printf("%ls\n",text);去掉l才能打印出来。。 // clean up free(text); json_free_value(&root); return EXIT_SUCCESS; } 【输出结果】 {"entry":{"name":"Andew","phone":"555 123 456"}}【mjson例三】
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include "json.h" int main (void) { setlocale (LC_ALL, ""); char *document = "{\"entry\":{\"name\":\"Andew\",\"phone\":\"555 123 456\"}}"; json_t *root; printf("Parsing the document…\n"); root = json_parse_document(document); printf("Printing the document tree…\n"); json_tree_to_string(root, &document); wprintf("%ls\n", document); // clean up json_free_value(&root); return EXIT_SUCCESS; }
【参考】
http://www.json.org/json-zh.html
来自:http://www.linuxpig.com/2010/12/yigecjsonjiexiku-mjsonjieshaoheshili/