使用Jackson从json对象列表中获取字段列表

时间:2018-07-15 12:36:32

标签: json parsing spring-boot jackson resttemplate

我有从api获取的JSON数据,我想获取json数据内的字段列表。

JSON数据:

    [  
       {  
          "code":"en",
          "native":true,
          "plurals":{  
             "length":2,
             "forms":[  
                "one",
                "other"
             ]
          }
       }, {  
          "code":"de",
          "native":true,
          "plurals":{  
             "length":2,
             "forms":[  
                "one",
                "other"
             ]
          }
       }, {  
          "code":"le",
          "native":true,
          "plurals":{  
             "length":2,
             "forms":[  
                "one",
                "other"
             ]
          }
       }
]

我想以list<String>的形式获取代码字段数据,如下所示:

["en","de","le"]

最简单的方法是什么?

注意:我正在使用Spring的RestTemplate来获取数据。

2 个答案:

答案 0 :(得分:0)

请尝试以下方法。

public static void main(String[] args) throws JSONException {
        String jsonString  = jsonResponseFromApi;

        JSONObject obj= new JSONObject();
        JSONObject jsonObject = obj.fromObject(jsonString);

        ArrayList<String> list = new ArrayList<String>();

        for(int i=0; i<jsonObject.length(); i++){
            list.add(jsonObject.getJSONObject(i).getString("code"));
        }

        System.out.println(list);
    }   
    }

有关更多详细信息,请参见下面的线程How to Parse this JSON Response in JAVA

答案 1 :(得分:0)

使用findValues方法提取名为“ code”的所有属性的值:

ObjectMapper om = new ObjectMapper();
JsonNode tree = om.readTree(json);

List<JsonNode> code = tree.findValues("code");

在示例数据上运行即可得到结果

["en", "de", "le"]