C語言 JSON 解析庫 - MJSON使用介紹
0
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/