色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 取多層json數據

謝彥文1年前10瀏覽0評論

對于需要訪問多層JSON數據的C語言開發人員來說,實現此目標并不算困難。C語言本身并未提供JSON操作的內置函數,但我們可以使用第三方JSON庫來輕松地管理JSON數據。

?

在下面的代碼示例中,我將使用cJSON庫來解析JSON數據,并介紹如何以遞歸方式訪問多層JSON數據。

?
#include <stdio.h>
#include <stdlib.h>
#include <cjson/cJSON.h>
void printJSON(cJSON* json)
{
if(json != NULL)
{
switch(json->type)
{
case cJSON_False:
printf("false\n");
break;
case cJSON_True:
printf("true\n");
break;
case cJSON_NULL:
printf("null\n");
break;
case cJSON_Number:
printf("%g\n", json->valuedouble);
break;
case cJSON_String:
printf("%s\n", json->valuestring);
break;
case cJSON_Array:
for(int i = 0; i < cJSON_GetArraySize(json); i++)
{
printJSON(cJSON_GetArrayItem(json, i));
}
break;
case cJSON_Object:
cJSON *child = json->child;
while(child != NULL)
{
printf("%s:\n", child->string);
printJSON(child);
child = child->next;
}
break;
default:
break;
}
}
}
int main()
{
char* jsonString = "{\"name\":\"John\",\"age\":30,\"cars\":[{\"model\":\"Audi\",\"year\":2021},{\"model\":\"BMW\",\"year\":2022}],\"city\":\"New York\"}";
cJSON* json = cJSON_Parse(jsonString);
printJSON(json);
cJSON_Delete(json);
return 0;
}

此代碼使用cJSON_Parse函數從JSON字符串中解析JSON數據,并使用printJSON函數以遞歸方式訪問并打印JSON數據。printJSON函數使用switch-case語句和cJSON庫提供的不同類型函數(例如cJSON_GetArrayItem)逐個訪問JSON數據。

?

請注意,我們可以使用該代碼訪問任意層數的JSON數據,只需使用適當的遞歸調用即可。