首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用YAJL解析JSON数组

用YAJL解析JSON数组
EN

Stack Overflow用户
提问于 2016-04-25 15:32:37
回答 1查看 811关注 0票数 0

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

代码语言:javascript
复制
{
    "val": [5,6]
}

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

代码语言:javascript
复制
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);

这种方法对于单个值是成功的。

代码语言:javascript
复制
{
    "val": 5
}

(我的意思是填充v并打印Node found. ),但不是用于数组。对于解析数组,我需要做什么不同的操作?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 04:18:19

  • 您可以使用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到数组中的一个对象,每次yajl_val obj =v->u.array.value i;// object if(YAJL_IS_DOUBLE(obj)){ printf( "%s/%f ",key,obj->printf.d );}}
  • 有关详细信息,您可以在这里看到:Parse complex JSON sub objects in C with YAJL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36844987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档