當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Linux C中對(duì)json格式數(shù)組數(shù)據(jù)的生成與解析
在網(wǎng)絡(luò)通信中,數(shù)據(jù)經(jīng)常被做成json格式的來(lái)進(jìn)行傳輸。那么我們?cè)趺丛趌inux系統(tǒng)中去做json格式的數(shù)據(jù)呢?怎么將接收到的json格式的數(shù)據(jù)解析出來(lái)呢?
1、linux json庫(kù)的安裝
(1)下載json-c源碼包
(2)解壓json-c的源碼包
Tar -xvf json-c-0.10.tar.gz
(3)配置成X86平臺(tái)json包
./configure --prefix=/usr
(4)編譯
Make
(5)安裝
Sudo make install
2、json庫(kù)中常用的函數(shù)接口
----------------生成json格式的數(shù)據(jù)常用函數(shù)接口-----------------
(1)創(chuàng)建一個(gè)空的json對(duì)象
Struct json_object *obj = json_object_new_object();
(2)以key-value的形式添加json對(duì)象的成員
Value值是int類型:key值是“temp”,value值是20
json_object_object_add(obj,temp”,json_object_new_int(20));
Value值是string類型:key值是“name”,value值是”mm”
json_object_object_add(obj,name”,json_object_new_string(“mm”));
(3)將json對(duì)象內(nèi)容,轉(zhuǎn)成json格式的字符串
Unsigned char *json_string = json_object_to_json_string(obj);
--------------解析json格式的數(shù)據(jù)常用函數(shù)接口------------------
(1)將json格式的字符串轉(zhuǎn)成json對(duì)象
Struct json_object new_obj = json_tokener_parse(json_string);
(2)根據(jù)指定對(duì)象的成員名,獲取這個(gè)成員對(duì)象的json對(duì)象
Struct json_object *object = json_object_object_get(new_object);
(3)根據(jù)key值取得相應(yīng)的value值
Value值為int:
Json_object_get_int(object);
Value值為string:
Json_object_get_string(object);
3、對(duì)于比較簡(jiǎn)單的json格式的數(shù)據(jù),我們用到上面的函數(shù)接口就可以完成json格式數(shù)據(jù)的制作和解析。
4、假如碰到比較復(fù)雜的json數(shù)組格式的數(shù)據(jù),我們又該怎么去制作和解析呢?
示例說(shuō)明:{
"jporder":
[
{ "jdevice": 1, "jppaynum": 1 },
{ "jdevice": 2, "jppaynum": 2 }
]
}
分析該數(shù)據(jù)的組成:
1、key值為”jporder”,與其相對(duì)應(yīng)的value值是一個(gè)數(shù)組[ { "jdevice": 1, "jppaynum": 1 }, { "jdevice": 2, "jppaynum": 2 } ]
2、數(shù)組的每個(gè)成員都是兩對(duì)json對(duì)象
數(shù)組成員1:{ "jdevice": 1, "jppaynum": 1 }
數(shù)組成員2:{ "jdevice": 2, "jppaynum": 2 }
3、每個(gè)json對(duì)象都是由key_value組成
具體的數(shù)據(jù)生成和解析方法如下:
數(shù)據(jù)生成部分:
數(shù)據(jù)解析部分:
運(yùn)行結(jié)果如下: