首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密钥名( json-c )

密钥名( json-c )
EN

Stack Overflow用户
提问于 2015-04-17 23:18:49
回答 1查看 4.1K关注 0票数 3

我使用json-c解析以下JSON字符串:

代码语言:javascript
复制
{
  "root": {
    "a": "1",
    "b": "2",
    "c": "3"
  }
}

还有,我有以下C代码。上面的JSON存储在变量b中。

代码语言:javascript
复制
json_object *new_obj, *obj1, *obj2;
int exists;

new_obj = json_tokener_parse(b); 
exists=json_object_object_get_ex(new_obj,"a",&obj1); 
if(exists==false) { 
  printf("key \"a\" not found in JSON"); 
  return; 
} 
exists=json_object_object_get_ex(new_obj,"b",&obj2); 
if(exists==false) { 
  printf("key \"b\" not found in JSON"); 
  return; 
}

从使用json_object_get_ex的"a“键中获取值的正确键名是什么?

对于上面的JSON,我没有工作(这两个查询都是假的),但是对于下面的JSON确实有效。我确信这与对“路径”到"a“使用哪一个键的误解有关。

代码语言:javascript
复制
{      
   "a": "1",
   "b": "2",
   "c": "3"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-18 20:59:14

好的,我知道了,就像我说的,我误解了json-c是如何解析原始JSON文本并将其表示为父节点和子节点的。

下面的代码正在工作。问题是,我试图从原始的json_object中获取子节点,这是不正确的。我首先必须获得根对象,然后从根获取子对象。

代码语言:javascript
复制
json_object *new_obj, *root_obj, *obj1, *obj2;
int exists;

new_obj = json_tokener_parse(b); 
exists=json_object_object_get_ex(new_obj,"root",&root_obj);
if(exists==false) { 
  printf("\"root\" not found in JSON"); 
  return; 
} 
exists=json_object_object_get_ex(root_obj,"a",&obj1); 
if(exists==false) { 
  printf("key \"a\" not found in JSON"); 
  return; 
} 
exists=json_object_object_get_ex(root_obj,"b",&obj2); 
if(exists==false) { 
  printf("key \"b\" not found in JSON"); 
  return; 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29710971

复制
相关文章

相似问题

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