通过 spring 引导读取 JSON 映射结构
Reading JSON map structure via spring boot
如果我的 REST 服务返回以下 JSON 结构:
{
"foo" : {
"id" : "baz"
}
"qux" : {
"id" : "toto"
}
}
对我来说,它看起来像一个地图结构。我不确定如何使用 spring 引导(通过 Jackson)阅读此内容。
我已经像这样定义了我的 JSON 绑定 class:
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 class 修复了这个错误,现在我没有收到错误。相反,我得到了一个填充的 ResponseEntity,它有一个 'Foos' 实例,但地图是空的。知道我做错了什么吗?
像这样修改你的 Foosclass
public class Foos {
@JsonIgnore
private Map<String, Object> properties = new HashMap<String, Object>();
@JsonAnyGetter
public Map<String, Object> getProperties() {
return this.properties;
}
@JsonAnySetter
public void setProperty(String name, Object value) {
this.properties.put(name, value);
}
}
您可以从地图中将 Object
类型转换为 Foo
。
如果您有任何问题,请告诉我!!
如果我的 REST 服务返回以下 JSON 结构:
{
"foo" : {
"id" : "baz"
}
"qux" : {
"id" : "toto"
}
}
对我来说,它看起来像一个地图结构。我不确定如何使用 spring 引导(通过 Jackson)阅读此内容。
我已经像这样定义了我的 JSON 绑定 class:
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 class 修复了这个错误,现在我没有收到错误。相反,我得到了一个填充的 ResponseEntity,它有一个 'Foos' 实例,但地图是空的。知道我做错了什么吗?
像这样修改你的 Foosclass
public class Foos {
@JsonIgnore
private Map<String, Object> properties = new HashMap<String, Object>();
@JsonAnyGetter
public Map<String, Object> getProperties() {
return this.properties;
}
@JsonAnySetter
public void setProperty(String name, Object value) {
this.properties.put(name, value);
}
}
您可以从地图中将 Object
类型转换为 Foo
。
如果您有任何问题,请告诉我!!