如何获取对象列表

时间:2019-08-07 09:30:15

标签: spring-boot resttemplate

我使用交换方法来获取一些API数据

然后我解析杰森。

我无法解析对象数据

我也使用getForObject方法。

但是那个方法没有解决。

如何获取JSON解析数据?

我确实想在“ kds”下插入本地数据库

调用其他API

String theUrl = "http://127.0.0.1:5000/api-datas";
     HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(new MediaType[] { MediaType.APPLICATION_JSON }));
     headers.setContentType(MediaType.APPLICATION_JSON);

       ResponseEntity<Entity> response = restTemplate.exchange(theUrl, HttpMethod.GET, entity, Entity.class);

--------------------------------------------------------------------------

Entity.class is

  @Transient
    private Object meta;
    @Transient
    private Object body;



    @Transient
    private List<EntityList> kds = new ArrayList<>();



    JsonParser springParser = JsonParserFactory.getJsonParser();
 Map<String, Object> map = springParser.parseMap(String.valueOf(response.getBody()));

像这样

{
    “meta”:
         {
          "result":true,
          "code":200,
           "msg":"",
           },
   “body”:
     {
      “kds”:
        [
        {
       "key":"some-keys",
       "data":
             {
              "sender":"some-mail",
              "receiver":"some-mail",
              "response":”200 OK”,
              "title":"some-title"
              }
            },
        "key":"some-keys",
        "data":
              {
              "sender":"some-mail",
              "receiver":"some-mail",
              "response":”200 OK”,
              "title":"some-title"
              }
            },
         }
        ]
    }
}

2 个答案:

答案 0 :(得分:0)

我从您的问题中了解到,您正在调用resttemplate execute方法,并且在将响应作为json获得后,您想粘贴json并插入db中, 您可以查看objectmapper来解析json并获取一些特定的代码值,例如您的“ kds”

您可以尝试

        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode Node = objectMapper.readTree(response.getBody());
        JsonNode rootList = Node.path("body").path("kds");
        ObjectReader reader = objectMapper.readerFor(new TypeReference<List<EntityList>>() {
        });
        List<EntityList> listOfValues = reader.readValue(rootList);

答案 1 :(得分:0)

也许您这样使用

JSONParser paser = new JSONParser();
        JSONObject obj = (JSONObject) paser.parse(response.getBody());
        JSONObject parse_meta = (JSONObject) obj.get("meta");
        JSONObject parse_body = (JSONObject) obj.get("body");
        JSONArray  parse_kds = (JSONArray ) parse_body.get("kds");


        parse_kds.stream().forEach(
                (getKds)->{
                    JSONObject parse_key = (JSONObject) getKds;
                    JSONObject parse_data = (JSONObject) getKds;
                    String key = (String) parse_key.get("key");
                    System.out.println(key);
                }
        );