【发布时间】:2017-02-28 20:37:16
【问题描述】:
如果我的 REST 服务返回以下 JSON 结构:
{
"foo" : {
"id" : "baz"
}
"qux" : {
"id" : "toto"
}
}
对我来说,它看起来像一个地图结构。我不确定如何使用弹簧靴(通过杰克逊)阅读此内容。
我已经像这样定义了我的 JSON 绑定类:
public class Foos {
private Map<String, Foo> fooInstances;
private void setFooInstances(Map<String, Foo> fooInstances) {
this.fooInstances = fooInstances;
}
private Map<String, Foo> getFooInstances() {
return fooInstances;
}
}
Foo 实例如下所示:
public class Foo {
private String id;
private void setId(String id) {
this.id = id;
}
private String getId() {
return id;
}
}
发出请求的spring代码是这样的:
RestTemplate template = new RestTemplate();
ResponseEntity<Foos> responseEntity = (ResponseEntity<Foos>) template.getForEntity(serviceEndpointURL, Foos.class);
我最初有一个 START_OBJECT 错误,我通过使用相应的地图创建 Foos 类来修复它,现在我没有收到错误。相反,我得到一个填充的 ResponseEntity,带有一个 'Foos' 实例,但地图为空。知道我做错了什么吗?
【问题讨论】:
-
您使用什么进行 JSON 映射?杰克逊还是格森?我在代码中没有看到它。
-
道歉。这是通过杰克逊。 Spring boot 使用 Jackson JSON 库。
-
感谢您的编辑。我在您的类文件中没有看到任何注释
-
也许您应该将地图初始化为
Map实现的空实例,例如new HashMap(); -
我对杰克逊很陌生。我应该使用哪些注释?我之前有一个没有绑定的示例(根据本教程:spring.io/guides/gs/consuming-rest)
标签: java json spring jackson resttemplate