在C語(yǔ)言中解析JSON中文的方法,需要用到一些第三方庫(kù),比如cJSON等。以下是一個(gè)示例程序:
#include#include #include #include "cJSON.h" int main() { char *json_str = "{\"name\":\"張三\",\"age\":18,\"hobbies\":[\"籃球\",\"羽毛球\"]}"; cJSON *root = cJSON_Parse(json_str); cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); cJSON *hobbies = cJSON_GetObjectItem(root, "hobbies"); cJSON *hobby1 = cJSON_GetArrayItem(hobbies, 0); cJSON *hobby2 = cJSON_GetArrayItem(hobbies, 1); printf("姓名:%s\n", name->valuestring); printf("年齡:%d\n", age->valueint); printf("愛好:%s,%s\n", hobby1->valuestring, hobby2->valuestring); cJSON_Delete(root); return 0; }
以上程序使用了cJSON庫(kù)來(lái)解析JSON字符串。首先需要將字符串傳入cJSON_Parse函數(shù),生成一個(gè)cJSON對(duì)象。然后可以通過(guò)cJSON_GetObjectItem函數(shù)獲取該對(duì)象中的鍵值對(duì),也可以通過(guò)cJSON_GetArrayItem函數(shù)獲取該對(duì)象中的數(shù)組元素。
在本例中,從JSON字符串中獲取了姓名、年齡和愛好三個(gè)鍵值對(duì),并打印輸出。hobbies這個(gè)鍵的值是一個(gè)包含兩個(gè)字符串的數(shù)組,因此需要使用cJSON_GetArrayItem函數(shù)來(lái)獲取數(shù)組元素。
解析中文JSON字符串,和解析其他JSON字符串基本一樣。僅需注意編碼格式是否正確,比如是UTF-8編碼還是GB2312編碼等,以避免亂碼問(wèn)題。