10

我有一条json包含一些字段的简单消息,并希望使用spring-web.

问题:我的目标类字段的命名与 json 响应不同。我怎样才能将它们映射到对象而不必重命名java中的字段?

有没有可以放在这里的注释?

{
  "message":"ok"
}

public class JsonEntity {
    //how to map the "message" json to this property?
    private String value;
}

RestTemplate rest = new RestTemplate();
rest.getForObject(url, JsonEntity.class);
4

3 回答 3

11

要将 JSON 属性映射到具有不同名称的 java 对象,请使用 @JsonProperty 注释,您的代码将是:

public class JsonEntity {
    @JsonProperty(value="message")
    private String value;
}
于 2015-04-20T11:22:25.703 回答
2

试试这个:

@JsonProperty("message")
private String value;
于 2015-04-20T11:21:45.137 回答
1

如果您熟悉它,您还可以使用 Jaxb 注释使用 Jackson 编组/解组 json

@XmlRootElement
public class JsonEntity {
   @XmlElement(name = "message")
  private String value;
}

但是您必须初始化您的 Jackson 上下文属性。这是一个如何使用 Jaxb 注释初始化 Jackson 上下文的示例。

ObjectMapper mapper = new ObjectMapper();

AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
mapper.getDeserializationConfig().setAnnotationIntrospector(introspector);
mapper.getSerializationConfig().setAnnotationIntrospector(introspector);
于 2015-04-20T11:38:49.110 回答