在網絡通信中,數據經常被做成json格式的來進行傳輸。那么我們怎么在linux系統中去做json格式的數據呢?怎么將接收到的json格式的數據解析出來呢?
1、linux json庫的安裝
(1)下載json-c源碼包
(2)解壓json-c的源碼包
Tar -xvf json-c-0.10.tar.gz
(3)配置成X86平臺json包
./configure --prefix=/usr
(4)編譯
Make
(5)安裝
Sudo make install
2、json庫中常用的函數接口
----------------生成json格式的數據常用函數接口-----------------
(1)創建一個空的json對象
Struct json_object *obj = json_object_new_object();
(2)以key-value的形式添加json對象的成員
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對象內容,轉成json格式的字符串
Unsigned char *json_string = json_object_to_json_string(obj);
--------------解析json格式的數據常用函數接口------------------
(1)將json格式的字符串轉成json對象
Struct json_object new_obj = json_tokener_parse(json_string);
(2)根據指定對象的成員名,獲取這個成員對象的json對象
Struct json_object *object = json_object_object_get(new_object);
(3)根據key值取得相應的value值
Value值為int:
Json_object_get_int(object);
Value值為string:
Json_object_get_string(object);
3、對于比較簡單的json格式的數據,我們用到上面的函數接口就可以完成json格式數據的制作和解析。
4、假如碰到比較復雜的json數組格式的數據,我們又該怎么去制作和解析呢?
示例說明:{
"jporder":
[
{ "jdevice": 1, "jppaynum": 1 },
{ "jdevice": 2, "jppaynum": 2 }
]
}
分析該數據的組成:
1、key值為”jporder”,與其相對應的value值是一個數組[ { "jdevice": 1, "jppaynum": 1 }, { "jdevice": 2, "jppaynum": 2 } ]
2、數組的每個成員都是兩對json對象
數組成員1:{ "jdevice": 1, "jppaynum": 1 }
數組成員2:{ "jdevice": 2, "jppaynum": 2 }
3、每個json對象都是由key_value組成
具體的數據生成和解析方法如下:
數據生成部分:
數據解析部分:
運行結果如下: