通过spring boot读取JSON映射结构

时间:2017-02-28 20:37:16

标签: java json spring jackson resttemplate

如果我的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;
   }

}

发出请求的弹簧代码是这样的:

RestTemplate template = new RestTemplate();
ResponseEntity<Foos> responseEntity = (ResponseEntity<Foos>) template.getForEntity(serviceEndpointURL, Foos.class);

我最初有一个START_OBJECT错误,我通过使用相应的地图创建Foos类来修复,现在我没有收到错误。相反,我获得了一个人口密集的ResponseEntity,其中包含了一个&#39; Foos&#39;实例,但地图为空。知道我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

像这样修改您的Foos类

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

您可以从地图中ObjectFoo进行类型转换。

如果您有任何疑问,请与我联系!!