gpt4 book ai didi

c - 使用 YAJL 解析 JSON 数组

转载 作者:行者123 更新时间:2023-11-30 17:01:45 25 4
gpt4 key购买 nike

我正在尝试解析 JSON 文件中的数组,如下所示

{
"val": [5,6]
}

使用以下代码,改编自库中包含的 parse_config.c

char errbuf[1024];
yajl_val node;

long length;
char *file_data = read_file(&length, "conf.json");

node = yajl_tree_parse((const char *) file_data, errbuf, sizeof(errbuf));

const char *path[] = {"val", (const char *) 0};
yajl_val v = yajl_tree_get(node, path, yajl_t_number);

if (v)
printf("Node found.\n");
else
printf("Can't find node %s\n", path[0]);

yajl_tree_free(node);
free(file_data);

此方法对于单个值是成功的,例如

{
"val": 5
}

(成功的意思是 v 已填充,并且 Node found. 已打印),但不适用于数组。对于要解析的数组,我需要做哪些不同的事情?

谢谢。

最佳答案

  • 您可以使用 YAJL_IS_ARRAY 来检查 v 是数组 true 还是 false。如果 v 是一个数组,它将返回 true。如果 v 不是数组,则返回 false。
  • 接下来,您可以使用此代码来解析它:

    size_t len = v->u.array.len;
    int i;
    for ( i = 0; i < len; ++i ) {

    // get ref to one object in array at a time
    yajl_val obj = v->u.array.values[ i ]; // object
    if(YAJL_IS_DOUBLE(obj)){
    printf( "%s/%f ", key, obj->u.number.d );
    }
    }
  • 详细信息,您可以在这里查看:Parse complex JSON sub objects in C with YAJL

关于c - 使用 YAJL 解析 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36844987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com