cjson是乙個基於c的json解析庫,這個庫非常簡單,只有cjson.c和cjson.h兩個檔案,支援json的解析和封裝,需要呼叫時,只需要#include "cjson.h"
就可以使用了,
json官方**:json
json字串:
這個json物件只有兩個鍵值對,鍵name對應字串andy,鍵age對應數字20。
void parse_str1(void)
"; cjson *str1_json, *str1_name, *str1_age;
printf("str1:%s\n\n",str1);
str1_json = cjson_parse(str1); //建立json解析物件,返回json格式是否正確
if (!str1_json)
else
str1_age = cjson_getobjectitem(str1_json, "age"); //獲取age鍵對應的值的資訊
if(str1_age->type==cjson_number)
cjson_delete(str1_json);//釋放記憶體}}
執行結果:
json字串:
解析函式:
void parse_str2(void)
,],\"time\":\"2018-11-17\"}";
cjson *root = 0;
cjson *loc_json = 0;
cjson *name1_json,*name2_json;
char *time_str, *str_tmp;
root = cjson_parse(str2);
if(!root)
printf("str2 json格式錯誤:%s \r\n", cjson_geterrorptr());
else
}cjson_delete(loc_json);
}
執行結果:
json字串:
}
解析函式:
void parse_bj_time(void)
}"; cjson *root;
cjson *result_json;
char *datetime, *week;
root = cjson_parse(bj_time_str);
if(root)
}cjson_delete(root);
cjson_delete(result_json);
}
執行結果:
json字串:
,
"daily": [, , ],
"last_update": "2018-11-18t11:00:00+08:00"}]}
解析函式:
void parse_seniverse_weather(void)
,\"daily\":[,,],\"last_update\":\"2018-11-18t11:00:00+08:00\"}]}";
cjson *root;
cjson *results;
cjson *last_update;
cjson *loc_json, *daily_json;
cjson *forecast_json;
char *loc_tmp, *weather_tmp, *update_tmp;
int i = 0;
root = cjson_parse((const char*)weather_str);
if(root)
}else
printf("daily json格式錯誤\r\n");
last_update = cjson_getobjectitem(results, "last_update");
update_tmp = last_update->valuestring;
if(last_update)
}else
}else
cjson_delete(root);
cjson_delete(results);
}
執行結果:
json字串:
,
"update": ,
"status": "ok",
"daily_forecast": [, , ]}]}
解析函式:
//解析和風天氣,格式和心知天氣非常像
void parse_heweather(void)
,\"update\":,\"status\":\"ok\",\"daily_forecast\":[,,]}]}";
cjson *root;
cjson *results;
cjson *basic_json, *update_json, *forecast_json;
cjson *daily_json;
int i = 0;
char *basic_tmp, *update_tmp, *status_tmp, *weather_tmp;
root = cjson_parse(heweather_str);
if(root)
update_json = cjson_getobjectitem(results, "update");
if(update_json)
status_tmp = cjson_getobjectitem(results, "status") -> valuestring;
printf("解析狀態:%s\n\n", status_tmp);
daily_json = cjson_getobjectitem(results, "daily_forecast");
if(daily_json)}}
}cjson_delete(root);
cjson_delete(results);
cjson_delete(basic_json);
cjson_delete(update_json);
cjson_delete(forecast_json);
cjson_delete(daily_json);
}
執行結果:
免費的天氣api介面:天氣api
歷史精選文章:
使用cJSON解析JSON字串
一 為何選擇cjson 我們在使用json格式時,如果只是處理簡單的協議,可以依據json格式,通過對字串 的操作來進行解析與建立。然而隨著協議逐漸複雜起來,經常會遇到一些未考慮周全的地方,需要進一 步的完善解析方法,此時,使用比較完善的json解析庫的需求就提出來了。基於方便引用的考慮,我們希望這...
json快速入門(cjson解析)
json是儲存和交換文字資訊的語法,與xml類似。json有兩種結構,分別是陣列和物件 json解析環境 cjson是乙個超輕巧,攜帶方便,單檔案,簡單的可以作為ansi c標準的json解析器,cjson庫包括cjson.h和cjson.c兩個檔案,放入指定目錄直接呼叫就可以了。1.有一對基本的 ...
cJSON對json資料的解析
目標 對下面這種結構的json資料解析 處理步驟 1.將json資料儲存在a.txt內 2.用fopen對資料檔案進行讀取 3.將讀取出的資料流寫入到乙個字串陣列中 4.用cjson parse將字串陣列轉換為json資料物件root 5.對root由外層向內層解析 如下 include inclu...