在C語言中使用json讀取中文數(shù)據(jù)可以分為兩種情況,一種是讀取中文字符,另一種是讀取中文字符串。
首先,我們需要在代碼中添加以下頭文件:
#include <stdio.h> #include <cjson/cJSON.h>
其中
接著,我們可以定義一個json字符串:
char* jsonStr = "{ \"name\":\"張三\", \"age\":\"18\" }";
如果我們要讀取其中的中文字符“張三”,可以使用cJSON_GetStringValue()函數(shù)來實現(xiàn):
cJSON* root = cJSON_Parse(jsonStr); if(root != NULL){ char* name = cJSON_GetStringValue(cJSON_GetObjectItem(root, "name")); }
其中cJSON_Parse()函數(shù)是將json字符串解析成json對象,cJSON_GetObjectItem()函數(shù)是獲取json對象中的一個元素,cJSON_GetStringValue()函數(shù)是獲取該元素字符串值。
如果我們要讀取中文字符串,可以使用cJSON_GetArraySize()和cJSON_GetArrayItem()函數(shù)來實現(xiàn):
char* jsonStr = "{ \"names\":[\"張三\",\"李四\"] }"; cJSON* root = cJSON_Parse(jsonStr); if(root != NULL){ cJSON* namesArray = cJSON_GetObjectItem(root, "names"); if(namesArray != NULL){ int namesCount = cJSON_GetArraySize(namesArray); for(int i=0; i<namesCount; i++){ char* name = cJSON_GetStringValue(cJSON_GetArrayItem(namesArray, i)); } } }
其中cJSON_GetArraySize()函數(shù)是獲取json數(shù)組的元素個數(shù),cJSON_GetArrayItem()函數(shù)是獲取json數(shù)組中的一個元素。
通過以上幾步,我們就可以成功讀取json中的中文數(shù)據(jù)了。