首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用json-c库遍历C中的键和值?

如何使用json-c库遍历C中的键和值?
EN

Stack Overflow用户
提问于 2021-09-16 16:32:08
回答 1查看 157关注 0票数 0

我使用json-c来解析json。是否可以遍历这些键和值。json_object_object_get_ex():此函数需要预先知道键是什么。如果我们不知道密钥,我们必须遍历它们。

EN

回答 1

Stack Overflow用户

发布于 2021-09-17 06:52:38

您可以从json_object_object_foreach宏开始

代码语言:javascript
复制
#define json_object_object_foreach(obj, key, val)
char * key;
struct json_object * val;
for (struct lh_entry * entry = json_object_get_object(obj) -> head;
  ({
    if (entry) {
      key = (char * ) entry -> k;
      val = (struct json_object * ) entry -> v;
    };entry;
  }); entry = entry -> next)

关于用法,这个article有一个很好的例子。

代码语言:javascript
复制
#include <json/json.h>

#include <stdio.h>

int main() {
  char * string = "{"
  sitename " : "
  joys of programming ",
  "tags": ["c", "c++", "java", "PHP"],
  "author-details": {
    "name": "Joys of Programming",
    "Number of Posts": 10
  }
}
";
json_object * jobj = json_tokener_parse(string);
enum json_type type;
json_object_object_foreach(jobj, key, val) {
  printf("type: ", type);
  type = json_object_get_type(val);
  switch (type) {
  case json_type_null:
    printf("json_type_nulln");
    break;
  case json_type_boolean:
    printf("json_type_booleann");
    break;
  case json_type_double:
    printf("json_type_doublen");
    break;
  case json_type_int:
    printf("json_type_intn");
    break;
  case json_type_object:
    printf("json_type_objectn");
    break;
  case json_type_array:
    printf("json_type_arrayn");
    break;
  case json_type_string:
    printf("json_type_stringn");
    break;
  }
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69212082

复制
相关文章

相似问题

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