在使用c json庫時,有可能會遇到關鍵字沖突的問題。
例如,c語言中關鍵字為"true"和"false",但是json中也使用了這些關鍵字。
{ "isSuccess": true, "errorMessage": null, "data": { "name": "John", "age": 25 } }
如果使用c語言的json庫解析上述json數據,"true"和"null"等關鍵字會與c語言自帶的同名關鍵字沖突,導致編譯錯誤。
為了避免這種情況,可以使用json庫提供的預定義宏,將關鍵字替換成庫中的定義。
#define cJSON_True ((cJSON_bool)1) #define cJSON_False ((cJSON_bool)0) #define cJSON_NULL ((cJSON_bool)2)
在解析json數據前,將預定義宏加入到代碼中:
#include "cJSON.h" //... #define cJSON_True ((cJSON_bool)1) #define cJSON_False ((cJSON_bool)0) #define cJSON_NULL ((cJSON_bool)2) //... cJSON *root = cJSON_Parse(json_string); if (root == NULL) { //... } cJSON *data = cJSON_GetObjectItemCaseSensitive(root, "data"); if (cJSON_IsObject(data)) { cJSON *name = cJSON_GetObjectItemCaseSensitive(data, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(data, "age"); }
加入預定義宏后,可以避免關鍵字沖突的問題。
上一篇html微信跳轉淘寶代碼
下一篇html微信防紅代碼