使用 json-c 解析深度嵌套的 JSON 键

2024-03-22

我正在使用json-c 库 https://json-c.github.io/json-c,在查看文档后,我找不到一种方法来获取深层嵌套的键/值而不使用一堆循环,这是我尝试过的:

json_object_object_foreach(json_data_obj, key, val) {
  printf("KEY:%s\t VAL:%s\n", key, json_object_to_json_string(val));
  /* TODO: Traverse the JSON
   * "results" => "channel" => "item" => "condition" => "temp"
   */
}

这是输出:

KEY:query        VAL:{ "count": 1, "created": "2015-04-10T06:05:12Z", "lang": "en-US", "results": { "channel": { "item": { "condition": { "code": "33", "date": "Thu, 09 Apr 2015 9:55 pm PDT", "temp": "56", "text": "Fair" } } } } }

如何在不多次使用 json_object_object_foreach() 宏的情况下获取临时值?


同时(自 json-c 0.13 起),可以通过使用以下命令遍历对象树来到达深度嵌套的对象:json_c_访问 http://json-c.github.io/json-c/json-c-0.15/doc/html/json__visit_8h.html功能。

int json_c_visit (
    json_object * jso,
    int future_flags,
    json_c_visit_userfunc * userfunc,
    void * userarg 
)   

该函数遍历json文档的每个对象并调用用户定义的函数userfunc。我们还可以使用 userfunc 的返回值来引导树的遍历。 采取单元测试 https://github.com/json-c/json-c/blob/master/tests/test_visit.c预期产出 https://github.com/json-c/json-c/blob/master/tests/test_visit.expected作为如何使用该功能的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 json-c 解析深度嵌套的 JSON 键 的相关文章

随机推荐