繁体   English   中英

如何在主 class - JSON 中获取嵌套数组值到 POJO

[英]How to get nested array values in main class - JSON to POJO

我有一个像这样的 JSON:

{
   "types":[
      {
         "slot":1,
         "type":{
            "name":"grass",
            "url":"https://pokeapi.co/api/v2/type/12/"
         }
      },
      {
         "slot":2,
         "type":{
            "name":"poison",
            "url":"https://pokeapi.co/api/v2/type/4/"
         }
      }
   ]
}

我只需要类型的名称,所以我想要这样的东西:

public class MainClass {

    private List<String> types;
}

我想避免创建嵌套类。 我怎样才能得到这个结果?

最简单的方法是将 JSON 转换为 map 并从那里检索 List 并从每个元素中获取 Map 并通过键类型获取值。 这是有关如何解析 JSON 的问题的链接 rest 应该是微不足道的

使用 Jackson,您可以:

ArrayNode types = objectMapper.readTree(jsonStr).withArray("types");

List<String> typeNames = IntStream.range(0, types.size())
        .mapToObj(types::get)
        .map(json -> json.get("type")
            .get("name")
            .asText())
        .collect(Collectors.toList());

或使用org.json ,你可以这样做:

JSONArray jsonArray = new JSONObject(jsonStr).getJSONArray("types");

List<String> typeNames = IntStream.range(0, jsonArray.length())
        .mapToObj(jsonArray::getJSONObject)
        .map(json -> json.getJSONObject("type")
                .getString("name"))
        .collect(Collectors.toList());

两者都返回 output:

[grass, poison]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM