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

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

2013-10-26 12:22 399 查看

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


0

2

MJSON是使用ISOC标准库开发的json解析库。

下载地址:

http://www.linuxpig.com/softwares/mjson/mjson-0.9.tar.bz2

安装:

解压出来,然后直接包含json.h就可以了。

下面是几个官方给出的几个例子,由于直接拷贝过来编译没通过,做了一些修改,详见注释部分。

【mjson例一】

viewsource

print?

01
<STRONG>#include<stdio.h>
02
#include<stdlib.h>
03
#include<locale.h>
04
05
#include"json.h"
06
07
int

main(
void
)

08
{
09
char

*text;
10
json_t*root,*entry,*label,*value;
11
setlocale

(LC_ALL,
""
);
//设为系统默认地域信息
12
13
//createstherootnode
14
root=json_new_object();
15
//createanentrynode
16
entry=json_new_object();
17
18
//第一部分,打印结果:
19
//{"entry":{"name":"Andew","phone":"555123456"}}
20
21
//insertthefirstlabel-valuepair
22
label=json_new_string(
"name"
);
23
value=json_new_string(
"Andew"
);
24
json_insert_child(label,value);
25
json_insert_child(entry,label);
26
27
//insertthesecondlabel-valuepair
28
label=json_new_string(
"phone"
);
29
value=json_new_string(
"555123456"
);
30
json_insert_child(label,value);
31
json_insert_child(entry,label);
32
33
//insertsthatobjectasavalueinalabel-valuepair
34
label=json_new_string(
"entry"
);
35
json_insert_child(label,entry);
36
37
//insertsthatlabel-valuepairintotherootobject
38
json_insert_child(root,label);
39
40
//printtheresult
41
json_tree_to_string(root,&text);
42
printf
(
"%s\n"
,text);
43
44
//cleanup
45
free
(text);
46
json_free_value(&root);
47
48
//打印第二部分,数组示例,
49
//结果:
50
//["test1","test2",109]

51
52
root=json_new_array();
53
label=json_new_string(
"test1"
);
54
json_insert_child(root,label);
55
value=json_new_string(
"test2"
);
56
json_insert_child(root,value);
57
value=json_new_number(
"109"
);
58
json_insert_child(root,value);
59
60
json_tree_to_string(root,&text);
61
printf
(
"%s\n"
,text);
62
63
//cleanup
64
free
(text);
65
json_free_value(&root);
66
67
return

EXIT_SUCCESS;
68
}</STRONG>
【mjson例二】

viewsource

print?

01
#include<stdio.h>
02
#include<stdlib.h>
03
#include<locale.h>
04
05
#include"json.h"
06
07
json_t*new_entry(
char

*name,
char

*phone)
08
{
09
json_t*entry,*label,*value;
10
11
//createanentrynode
12
entry=json_new_object();
13
14
//insertthefirstlabel-valuepair
15
label=json_new_string(
"name"
);
16
value=json_new_string(
"Andew"
);
17
json_insert_child(label,value);
18
json_insert_child(entry,label);
19
20
//insertthesecondlabel-valuepair
21
label=json_new_string(
"phone"
);
22
value=json_new_string(
"555123456"
);
23
json_insert_child(label,value);
24
json_insert_child(entry,label);
25
26
//insertsthatobjectasavalueinalabel-valuepair
27
label=json_new_string(
"entry"
);
28
json_insert_child(label,entry);
29
30
return

label;
31
}
32
33
int

main(
void
)

34
{
35
setlocale

(LC_ALL,
""
);
//设置为系统默认的地域信息
36
37
json_t*root,*subtree;
38
39
//createstherootnode
40
root=json_new_object();
41
42
//createsthedesiredMJSONdocumentsubtree
43
subtree=new_entry(
"Andrew"
,
"555123456"
);

44
45
//insertsthesubtreeintotherootobject
46
json_insert_child(root,subtree);
47
48
//printtheresult
49
char

*text;
50
json_tree_to_string(root,&text);
51
printf
(
"%s\n"
,text);
//官方例子中为printf("%ls\n",text);去掉l才能打印出来。。

52
53
//cleanup
54
free
(text);
55
json_free_value(&root);
56
return

EXIT_SUCCESS;
57
}
58
59
【输出结果】
60
{
"entry"
:{
"name"
:
"Andew"
,
"phone"
:
"555
123456"
}}
【mjson例三】

viewsource

print?

01
#include<stdio.h>
02
#include<stdlib.h>
03
#include<locale.h>
04
05
#include"json.h"
06
07
int

main(
void
)

08
{
09
setlocale

(LC_ALL,
""
);
10
char

*document=
"{\"entry\":{\"name\":\"Andew\",\"phone\":\"555123456\"}}"
;
11
12
json_t*root;
13
14
printf
(
"Parsingthedocument…\n"
);
15
root=json_parse_document(document);
16
17
printf
(
"Printingthedocumenttree…\n"
);
18
json_tree_to_string(root,&document);
19
wprintf(
"%ls\n"
,document);
20
21
//cleanup
22
json_free_value(&root);
23
return

EXIT_SUCCESS;
24
}
【参考】

http://www.json.org/json-zh.html

http://mjson.sourceforge.net/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: