在使用C語(yǔ)言處理JSON對(duì)象的時(shí)候,我們通常需要從JSON對(duì)象中獲取某個(gè)key的值。下面是一個(gè)簡(jiǎn)單的JSON對(duì)象示例:
{ "name": "張三", "age": 20, "hobbies": ["籃球", "游泳"] }
要獲取該JSON對(duì)象中的某個(gè)key的值,可以使用cJSON庫(kù)的cJSON_GetObjectItem函數(shù)。例如,要獲取該JSON對(duì)象中"name"所對(duì)應(yīng)的值,可以使用以下代碼:
cJSON * json = cJSON_Parse(json_string); //將json字符串解析為cJSON對(duì)象 if(json != NULL) { cJSON * name = cJSON_GetObjectItem(json, "name"); //獲取"name"所對(duì)應(yīng)的cJSON對(duì)象 if(name != NULL) { printf("名字:%s\n", name->valuestring); //輸出"name"的值 } }
上面的代碼首先將JSON字符串解析為cJSON對(duì)象,然后使用cJSON_GetObjectItem函數(shù)獲取"name"所對(duì)應(yīng)的cJSON對(duì)象。如果獲取成功,則可以使用name->valuestring來(lái)獲取"name"的值,即"張三"。
同樣的方法也適用于獲取其他key的值。例如要獲取"age"的值,可以使用以下代碼:
cJSON * json = cJSON_Parse(json_string); //將json字符串解析為cJSON對(duì)象 if(json != NULL) { cJSON * age = cJSON_GetObjectItem(json, "age"); //獲取"age"所對(duì)應(yīng)的cJSON對(duì)象 if(age != NULL) { printf("年齡:%d\n", age->valueint); //輸出"age"的值 } }
當(dāng)然,如果要獲取的key對(duì)應(yīng)的值是一個(gè)數(shù)組,也可以使用cJSON庫(kù)提供的相關(guān)函數(shù)來(lái)獲取每一個(gè)元素的值。