淘先锋技术网

首页 1 2 3 4 5 6 7

在处理JSON数据时,我们有时需要判断JSON数据的层级结构。在C语言中,可以使用递归函数来判断JSON层级。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cJSON.h>
int recursive(cJSON *json)
{
int level = 0;
if(json==NULL)
return level;
else
{
cJSON *child = json->child;
while(child!=NULL)
{
int temp_level = recursive(child)+1;
level = temp_level>level?temp_level:level;
child=child->next;
}
}
return level;
}
int main()
{
char *json_str = "{\"name\": \"张三\",\"age\": 25,\"gender\": \"male\",\"address\": {\"province\": \"北京市\",\"city\": \"北京市\",\"area\": \"东城区\"}}";
cJSON *json = cJSON_Parse(json_str);
if(json==NULL)
{
printf("json格式不正确!\n");
cJSON_Delete(json);
return -1;
}
int level = recursive(json);
printf("JSON的层级为:%d\n", level);
cJSON_Delete(json);
return 0;
}

在上述代码中,我们使用CJSON库解析JSON字符串,并使用递归函数来判断JSON层级。函数recursive的参数为cJSON类型的指针,返回值为整型,表示JSON的层级。如果传入的参数为空,表示此节点为叶子节点,直接返回当前层级;否则,遍历该节点的子节点,计算子节点的层级,并取最大值作为当前节点的层级。最终得到的层级即为整个JSON数据的层级。

使用递归函数判断JSON层级结构,代码简单易懂,有利于扩展。我们可以根据JSON数据的具体情况,自由添加各种处理逻辑。