Resttemplate不能正确反序列化JSON

时间:2018-11-02 16:53:32

标签: java json spring-mvc spring-boot resttemplate

我的服务器输出以下JSON对象:(ContentType = application / json)

{"Name":["Name1","Name2"]}

这是我的Java代码,用于尝试将其读入POJO。

它创建Names类的实例,但其中的数组为null。

我在这里想念什么?

restTemplate = new RestTemplate();
uri = "http://localhost:80/api/names";

Names namesWrapperInstance = restTemplate.getForObject(uri, Names.class);

if(namesWrapperInstance != null && namesWrapperInstance.getNames() != null) {
  for(String name : namesWrapperInstance.getNames()) {
    System.out.print(name);
  }
}

@JsonRootName(value = "Name")
class Names {
  private String[] Names;

  public Names() {

  }

  public String[] getNames() {
    return Names;
  }

  public void setNames(String[] Names) {
    this.Names = Names;
  }
}

1 个答案:

答案 0 :(得分:3)

删除JsonRootName批注,遵守Java代码中的Java命名约定,并用names注释@JsonProperty("Name")字段。

我强烈建议也使用集合而不是数组。

如果可以的话,您也应该真正重构JSON。与Java中一样,对字段使用小写字母,并将其重命名为names,因为它是一个数组,包含多个名称,而不仅仅是一个名称。如果您这样做了,JsonProperty注释就不再需要了。