什么是JSON?JSON(JavaScript Object Notation,JavaScript 對(duì)象表示法)是一種輕量級(jí)的數(shù)據(jù)交換格式。JSON 采用完全獨(dú)立于語(yǔ)言的格式表示數(shù)據(jù)。JSON 格式是基于 ECMAScript(繼承C語(yǔ)言基本語(yǔ)法)的一個(gè)子集。
在C語(yǔ)言中,解析JSON數(shù)據(jù)可以采用第三方庫(kù),如 cJSON。cJSON 是一個(gè)極其輕量級(jí)的JSON解析器,是C語(yǔ)言中JSON解析最方便的工具之一。cJSON 只包含兩個(gè)文件:cJSON.h 和 cJSON.c,函數(shù)實(shí)現(xiàn)簡(jiǎn)單,極易上手。
/* cJSON解析JSON字符串示例 */ #include#include"cJSON.h" void cJSON_ParseText(char* jsonText) { // 解析 jsonText cJSON* root = cJSON_Parse(jsonText); cJSON* userInfo = cJSON_GetObjectItem(root, "userInfo"); cJSON* username = cJSON_GetObjectItem(userInfo, "username"); cJSON* password = cJSON_GetObjectItem(userInfo, "password"); cJSON* hobbies = cJSON_GetObjectItem(userInfo, "hobbies"); cJSON* arrayElement = NULL; printf("username : %s \n", username->valuestring); printf("password : %s \n", password->valuestring); printf("hobbies : "); cJSON_ArrayForEach(arrayElement, hobbies) { printf("%s ", arrayElement->valuestring); } cJSON_Delete(root); } int main() { char* testJsonText = "{\"userInfo\":{\"username\":\"Tom\",\"password\":\"123456\",\"hobbies\":[\"swimming\",\"reading\",\"running\"]}}"; cJSON_ParseText(testJsonText); return 0; }
以上代碼是一個(gè)簡(jiǎn)單的cJSON解析JSON字符串的示例。可以看到代碼中包括 cJSON 的頭文件,并在函數(shù) cJSON_ParseText 中解析了一個(gè)字符串 jsonText,然后處理 root 中的各個(gè)字段并打印輸出。其中 cJSON_GetObjectItem 函數(shù)用于獲取 cJSON 對(duì)象中的元素。在數(shù)組中,需要使用 cJSON_ArrayForEach 遍歷數(shù)組元素。
上一篇python 能加載c
下一篇erlang處理json