检索JSONObject的字段名称 - Java

时间:2016-02-20 19:03:46

标签: 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进行反序列化的字段名称的信息。

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

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

结果我得到了:

name
birth
death
contribs

但是,例如我没有name.firstname.last。因此,此迭代器不适用于innested Object。

2 个答案:

答案 0 :(得分:0)

您只是打印钥匙。

要获取值,请尝试

<controls:GroupingGrid ShowGroupingItemCount="True" x:Name="TabGrid"
                       ItemsSource="{Binding SearchResultsSource.View}"
                       SelectedItem="{Binding SelectedItem}">

修改

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

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

答案 1 :(得分:-1)

我相信你需要知道json结构。  如果有必要,请对孩子进行迭代。

编辑:我错了。这个问题可以帮到你,请看Sean Patrick Floyd的回答:JSON - Iterate through JSONArray