• C語言 JSON 解析庫 - MJSON使用介紹

    0
    HTML JSON C/C++ Go 44455 次瀏覽

    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://mjson.sourceforge.net/


    來自:http://www.linuxpig.com/2010/12/yigecjsonjiexiku-mjsonjieshaoheshili/

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色