我使用C编写的json解析器lib来解析JSON对象。 lib链接是:https://github.com/udp/json-parser。
我想解析的json对象/字符串是:
{" video_id":105," st":" S3","处理" :[{" start" :" 1","结束" :" 2"}]}}
"处理"包含另一个JSON对象。
我已经解析了前三项。但我无法找到解析"处理" json对象的方法。我使用以下代码: -
if (!strcmp(json->u.object.values[i].name, "video_id"))
{
video_id=json->u.object.values[i].value->u.integer;
}
.
.
if (!strcmp(json->u.object.values[i].name, "processing"))
{
printf("\nNumber of JSON OBJECTS : %d\n", json->u.object.values[i].value->u.object.length);
}
json是通过在JSON字符串上调用lib获得的解析对象。任何人都可以指导我如何处理嵌套对象?
任何帮助都将非常感激
我的完整代码是:
json_value *json;
json_char *json_object="{\"video_id\": 105, \"st\": \"S3\", \"processing\" : [{\"type\" : \"clipping\"},{\"fese\" : \"dipping\"}]}";
printf("%s",json_object);
//json_value * json_parse (const json_char * json,
// size_t length);
json=json_parse(json_object, strlen(json_object));
// json_type json_object;
printf("\n%s\n",json->u.object.values[0].name);
printf("\t%d\n",json->u.object.values[0].value->u.integer);
printf("\n%s\n",json->u.object.values[2].name);
printf("\t%d\n",json->u.object.values[2].value->u.object.length);
printf("\t%s\n",json->u.object.values[2].value->u.object.values[0].name);
答案 0 :(得分:1)
来自documentation,API字段::
type
的{{1}}字段是以下之一:
因此,请检查"处理"的json_value
字段。值。如果发现是type
,请为数组执行json_array
以获取新的json_parse
。现在这个json_value
将为您提供嵌套的JSON对象。
答案 1 :(得分:0)
将这些作为参考:
js_v->u.object.values[1].value->u.array.values[0]->type
js_v->u.object.values[1].value->u.array.values[0]->u.string.ptr
我用它们来引用数组中的字符串元素:
{"t":"type","d":["element1","element2","element3"]}
在你的情况下,我认为你应该重复这样的结构:
js_v->u.object.values[2].value->u.array.values[0]->u.object.values[0]->u.string.ptr
运气!