json-c 中的键名
Key names in json-c
我正在使用 json-c 来解析以下 JSON 字符串:
{
"root": {
"a": "1",
"b": "2",
"c": "3"
}
}
而且,我有以下 C 代码。上面的JSON存放在变量b.
中
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 不起作用(对于两个查询,exists 都是假的),但它对下面的 JSON 起作用。我敢肯定,这与对 "path" 和 "a" 使用哪个键的误解有关。
{
"a": "1",
"b": "2",
"c": "3"
}
好的,我明白了,就像我说的,我误解了 json-c 是如何解析原始 JSON 文本并将其表示为父节点和子节点的。
以下代码有效。问题是我试图从原始 json_object 获取子节点,这是不正确的。我首先必须获取根对象,然后从根获取子对象。
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;
}
我正在使用 json-c 来解析以下 JSON 字符串:
{
"root": {
"a": "1",
"b": "2",
"c": "3"
}
}
而且,我有以下 C 代码。上面的JSON存放在变量b.
中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 不起作用(对于两个查询,exists 都是假的),但它对下面的 JSON 起作用。我敢肯定,这与对 "path" 和 "a" 使用哪个键的误解有关。
{
"a": "1",
"b": "2",
"c": "3"
}
好的,我明白了,就像我说的,我误解了 json-c 是如何解析原始 JSON 文本并将其表示为父节点和子节点的。
以下代码有效。问题是我试图从原始 json_object 获取子节点,这是不正确的。我首先必须获取根对象,然后从根获取子对象。
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;
}