java - 检索 JSONObject 的字段名称 - Java

标签 java json

我必须检索 Java 中 JSONObject 的所有字段名称。 例如,这是一个 JSON:

{
"name" : {
        "first" : "John",
        "last" : "McCarthy"
    },
"birth" : ISODate("1927-09-04T04:00:00.000Z"),
"death" : ISODate("2011-12-24T05:00:00.000Z"),
"contribs" : [ 
        "Lisp", 
        "Artificial Intelligence", 
        "ALGOL"
    ]
}

这个 JSON 对象只是一个示例,自从导入它以来我无法知道 JSONObject 包含什么。我没有任何关于使用 Gson/Jackson 反序列化的字段名称的信息。

假设我有一个包含先前 JSON 对象的 JSONObject myDocJson,我使用迭代器:

Iterator<?> keys = myDocJson.keySet().iterator();
while(keys.hasNext()) {
System.out.println(keys.next());
}

结果我得到:

name
birth
death
contribs

但是例如我没有 name.firstname.last。所以这个迭代器不适用于嵌套对象。

最佳答案

您仅打印 key 。

要获取值,请尝试

JSONObject object = null; // your json object
for (Object key : object.keySet()) {
    System.out.println(key + "=" + object.get(key)); // to get the value
}

编辑

对于 JSONObject 内部的对象,请尝试

JSONObject object = null; // your json object
for (Object key : object.keySet()) {
    System.out.println(key + "=" + object.get(key)); // to get the value
    for (Object subKey : ((JSONObject) object.get(key)).keySet()) {
        System.out.println(subKey + "=" + object.get(subKey));
    }
}

关于java - 检索 JSONObject 的字段名称 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527703/

相关文章:

java - 不同方法中数字的频率

java - 如何将javascript变量传递给struts2属性标签

javascript - Mustache.js 添加文本而不是 html

c# - 从 C# 类生成 JSON 模式

javascript - Ajax未捕获类型错误: Cannot read property 'length' of undefined

javascript - 如何在 Vue.js 中使用 v-for 遍历对象数组?

java - Powermock:静态接口(interface)方法给出未完成的 stub 异常

java - 上课地点

java - Spring Integration 和 RabbitMQ,如何避免对入站 channel 适配器进行轮询

json - Jackson 反序列化 - 包含 ArrayList<T>