【问题标题】:How to get an object to list如何获取要列出的对象
【发布时间】:2019-08-07 09:30:15
【问题描述】:

我使用交换方法来获取一些 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"
              }
            },
         }
        ]
    }
}

【问题讨论】:

    标签: spring-boot resttemplate


    【解决方案1】:

    也许你会这样使用

    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);
                    }
            );
    

    【讨论】:

      【解决方案2】:

      我从您的问题中了解到,您正在调用 resttemplate 执行方法,并且在您以 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);
      

      【讨论】:

      • 谢谢~!。你的建议是节省我的时间
      • @user3066285 如果它对你有帮助,你可以点赞它,这样其他人也可以在正确的方向上品脱
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2019-08-24
      • 2015-06-17
      相关资源
      最近更新 更多