 Linux C中對json格式數組(zu)數據的(de)生成與解(jie)析
							時間:2018-08-15      來源(yuan):未知
							Linux C中對json格式數組(zu)數據的(de)生成與解(jie)析
							時間:2018-08-15      來源(yuan):未知 
							在網(wang)絡通信(xin)中,數(shu)(shu)據經常被(bei)做成json格式(shi)的來(lai)進行傳輸(shu)。那么(me)我們怎么(me)在linux系統中去做json格式(shi)的數(shu)(shu)據呢?怎么(me)將接(jie)收到的json格式(shi)的數(shu)(shu)據解析出來(lai)呢?
1、linux json庫的(de)安裝(zhuang)
(1)下載json-c源碼包
(2)解壓(ya)json-c的源碼包
Tar -xvf json-c-0.10.tar.gz
(3)配(pei)置成X86平臺json包
./configure --prefix=/usr
(4)編譯
Make
(5)安裝
Sudo make install
2、json庫中常(chang)用的函數接(jie)口
----------------生成json格式的數據常(chang)用函(han)數接口-----------------
(1)創建(jian)一個空的json對象
Struct json_object *obj = json_object_new_object();
(2)以key-value的(de)形式添加json對象的(de)成員(yuan)
Value值是int類型:key值是“temp”,value值是20
json_object_object_add(obj,temp”,json_object_new_int(20));
Value值(zhi)是(shi)string類型:key值(zhi)是(shi)“name”,value值(zhi)是(shi)”mm”
json_object_object_add(obj,name”,json_object_new_string(“mm”));
(3)將(jiang)json對(dui)象內容,轉成(cheng)json格(ge)式(shi)的(de)字符串
Unsigned char *json_string = json_object_to_json_string(obj);
--------------解析json格式(shi)的數據常用函數接(jie)口------------------
(1)將json格式(shi)的字符串轉(zhuan)成json對(dui)象
Struct json_object new_obj = json_tokener_parse(json_string);
(2)根據指定對(dui)象(xiang)(xiang)的成(cheng)員名,獲取這個成(cheng)員對(dui)象(xiang)(xiang)的json對(dui)象(xiang)(xiang)
Struct json_object *object = json_object_object_get(new_object);
(3)根據key值取得相應的(de)value值
Value值為(wei)int:
Json_object_get_int(object);
Value值(zhi)為string:
Json_object_get_string(object);
3、對于比較簡單的json格式的數據,我(wo)們(men)用到(dao)上面的函數接口就可以完成(cheng)json格式數據的制作和解析。
4、假如碰到比較復雜的(de)json數(shu)(shu)組格式的(de)數(shu)(shu)據,我們又該怎(zen)么去(qu)制(zhi)作和解析呢?
示例說明(ming):{
"jporder":
[
 { "jdevice": 1, "jppaynum": 1 },
{ "jdevice": 2, "jppaynum": 2 }
]
}
分(fen)析該數據的(de)組成:
1、key值為”jporder”,與其(qi)相對應的(de)value值是一個(ge)數組[ { "jdevice": 1, "jppaynum": 1 }, { "jdevice": 2, "jppaynum": 2 } ]
2、數組的每個成員都是兩對(dui)json對(dui)象
數組成(cheng)員(yuan)1:{ "jdevice": 1, "jppaynum": 1 }
數組成員2:{ "jdevice": 2, "jppaynum": 2 }
3、每個json對象都是由key_value組成
具體(ti)的數據(ju)生成和解析方法如下:
數據生成部分(fen):
  
數(shu)據(ju)解析部分:
  
運行(xing)結果如下:
  

