最近在開發中遇到了一個問題,就是使用C語言中的json庫進行json格式的解析,但是解析出來的對象為空。
#include "cJSON.h" int main() { char* json_str = "{\"name\":\"張三\",\"age\":18}"; cJSON* root = cJSON_Parse(json_str); if (root == NULL) { printf("JSON parse failed!\n"); return -1; } cJSON* name = cJSON_GetObjectItem(root, "name"); cJSON* age = cJSON_GetObjectItem(root, "age"); if (name == NULL || age == NULL) { printf("JSON get failed!\n"); return -1; } printf("Name: %s, Age: %d\n", name->valuestring, age->valueint); return 0; }
這段代碼應該沒有問題,但是執行后出現了奇怪的結果。
JSON parse failed!
初步分析發現,是json格式字符串解析出了問題,導致root對象為空,那么問題出在哪里呢?
經過查找,發現是json格式字符串的問題,因為在編譯時會自動添加轉義字符,所以json字符串中的雙引號需要添加轉義字符,修改后的json字符串如下:
char* json_str = "{\"name\":\"張三\",\"age\":18}";
修改完成之后,再次運行程序,就可以得到正確的解析結果了。
Name: 張三, Age: 18
總結:C語言中json庫的使用雖然有些繁瑣,但只需注意json格式字符串的編寫,其余的解析操作都十分簡單易懂。