使用Spring RestTemplate将嵌套的JSON对象映射到Java类

我知道这可能很简单.但是,我无法让它发挥作用.

所以我试图使用Spring RestTemplate来映射我的JSON数据.我有一个来自休息电话的JSON响应.

{
  "message":"ok",
  "status":"ok",
  "data":[
      {"Name":"Yo",
       "Address":"100 Test Rd"},
      {...},
      {...}
   ]
}

这是我试图将它映射到的类.

@JsonIgnoreProperties(ignoreUnknown = true)
public class Response implements Serializable {

  private String message;
  private String status;
  private List<Data> data;

  // I could also use a array instead
  // private Data[] data;
}

这是我的Data类:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Data implements Serializable {

  private String Name;
  private String Address;
}

这是我用来调用RestTemplate的代码:

public Reponse getResponse() {
    ResponseEntity<Reponse> responseEntity = restTemplate.getForEntity(Url, Reponse.class);

    return responseEntity.getBody();
}

现在问题来了.我能够获得“消息”和“状态”,但是当我尝试记录/打印数据时,它显示为null.不完全确定这里发生了什么.我真的可以用一些帮助.谢谢.

最佳答案
我有一个类似的问题,RestTemplate也没有将嵌套的JSON对象映射到我的类模型,经过很多挫折我决定使用RestTemplate将我的JSON检索为String(而不是直接转换为我的目标对象),然后使用google Gson库将我的String转换为我的目标实体.

的pom.xml

<dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.4</version>
    </dependency>

调用RestTemplate的代码:

 ResponseEntity<String> responseEntity = restTemplate.getForEntity(Url,String.class);
Gson gson = new GsonBuilder().create();
Response reponse = gson.fromJson(responseEntity , Response.class);

不幸的是我无法找到为什么我的嵌套对象没有使用RestTemplate首先映射,但我希望这个解决方法有所帮助!

转载注明原文:使用Spring RestTemplate将嵌套的JSON对象映射到Java类 - 代码日志