Ren*_*Ren 9 java spring json resttemplate
我知道这可能很简单.但是,我无法让它发挥作用.
所以我试图使用Spring RestTemplate来映射我的JSON数据.我有一个来自休息电话的JSON响应.
{
"message":"ok",
"status":"ok",
"data":[
{"Name":"Yo",
"Address":"100 Test Rd"},
{...},
{...}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我试图将它映射到的类.
@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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的Data类:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Data implements Serializable {
private String Name;
private String Address;
}
Run Code Online (Sandbox Code Playgroud)
这是我用来调用RestTemplate的代码:
public Reponse getResponse() {
ResponseEntity<Reponse> responseEntity = restTemplate.getForEntity(Url, Reponse.class);
return responseEntity.getBody();
}
Run Code Online (Sandbox Code Playgroud)
现在问题来了.我能够获得"消息"和"状态",但是当我尝试记录/打印数据时,它显示为null.不完全确定这里发生了什么.我真的可以用一些帮助.谢谢.
小智 5
我也遇到了类似的问题,RestTemplate 没有将嵌套的 JSON 对象映射到我的类模型,在非常沮丧之后,我决定使用 RestTemplate 将我的 JSON 作为字符串检索(而不是直接转换为我的目标对象),然后使用谷歌 Gson 库将我的字符串转换为我的目标实体。
pom.xml
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
调用 RestTemplate 的代码:
ResponseEntity<String> responseEntity = restTemplate.getForEntity(Url,String.class);
Gson gson = new GsonBuilder().create();
Response reponse = gson.fromJson(responseEntity , Response.class);
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法找出为什么我的嵌套对象没有首先使用 RestTemplate 进行映射,但我希望这个解决方法有帮助!
请用private List<Data> data = new AllarList<Data>( ); 请在这两个类中提供 getters() 和 setters() 方法。
放在@JsonInclude(Include.NON_EMPTY)Data类上面
请在主 POM.xml 文件的部分下添加以下依赖项并进行 Maven 编译。那么我想你的问题就会得到解决。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.8</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15326 次 |
| 最近记录: |