在处理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数据的具体情况,自由添加各种处理逻辑。