您的位置:首页 > 编程语言 > C语言/C++

C语言 JSON 解析库 - MJSON使用介绍

2016-12-14 15:44 393 查看
安装:

解压出来,然后直接包含 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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: