javascript
c java json_cJSON_json包的C语言解析库
cJSON庫描述
CJSON是一個用于解析JSON包的C語言庫,庫文件為cJSON.c和cJSON.h, 所有的實現都在這兩個文件中。原作者的地址cJSON。
JSON包的解析
例如有一個JSON的數據包如下:
{
"rxpk": [
{
"tmst": 1868500100,
"time": "2016-07-07T13:20:40.003906Z",
"chan": 1,
"rfch": 0,
"freq": 779.7,
"stat": 1,
"modu": "LORA",
"datr": "SF9BW125",
"codr": "4/5",
"lsnr": 9.8,
"rssi": -37,
"size": 83,
"data": "QH/4iimAKgACB0KHP8e0IgQAhI0bBi9bvFfb8jHeSWEAhpnsCGHwt9pUCvrRMazQRBtN+kh3Ge5hFL8jUtHpk3luFtcTLlgGVMPSBLpSp8h6C44="
}
]
}
我們需要獲取其中的data字段,需要進行的過程如下:
首先聲明變量 cJSON *json;
cJSON *rxpk;
cJSON *arr0;
cJSON *data;
將上述的字符串進行解析,并保存在json中;
獲取json其中的rxpk字段的內容,并保存在rxpk中;
獲取rxpk中的arr部分,拿出一種的第一個數組,并保存在arr0;
獲取arr0的data部分,并保存在data;
使用data->valuestring即可獲取其中的data字段的內容 具體的代碼實現如下所示: uint16_t rxpk_data_get(char* text,char* dest_str)
{
uint16_t len = 0;
cJSON *json;
cJSON *data;
cJSON *arr0;
cJSON *rxpk;
json= cJSON_Parse(text);
if(!json)//對JSON包進行合法性檢查
return 0;
rxpk = cJSON_GetObjectItem(json,"rxpk");
if(!rxpk)//對rxpk進行合法性檢查
return 0;
arr0 = cJSON_GetArrayItem(rxpk,0);
if(!arr0)//對arr0進行合法性檢查
return 0;
data =cJSON_GetObjectItem(arr0,"data");
if(!data)//對data進行合法性檢查
return 0;
len = strlen(data->valuestring);
memcpy(dest_str,data->valuestring,len);
dest_str[len] = 0;
return len;
}
在json包中遇到數組時
/* Returns the number of items in an array (or object). */
extern int cJSON_GetArraySize(cJSON *array);
這個函數可以獲取數組的長度。
總結
以上是生活随笔為你收集整理的c java json_cJSON_json包的C语言解析库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 数据记录导出_mysql如何
- 下一篇: 直接修改html文本页面没变化,VUE