我有一个简短的json
消息,其中包含一些字段,并希望使用spring-web
将其映射到java对象。
问题:我的目标类字段的命名与int 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);
答案 0 :(得分:9)
要将JSON属性映射到具有不同名称的java对象,请使用 @JsonProperty annotation ,您的代码将为:
public class JsonEntity {
@JsonProperty(value="message")
private String value;
}
答案 1 :(得分:2)
试试这个:
@JsonProperty("message")
private String value;
答案 2 :(得分:1)
如果您熟悉它,您还可以使用Jaxb注释来使用Jackson编组/解组json
@XmlRootElement
public class JsonEntity {
@XmlElement(name = "message")
private String value;
}
但是你必须初步化你的杰克逊语境。这里是一个如何使用Jaxb注释初始化Jackson上下文的示例。
ObjectMapper mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
mapper.getDeserializationConfig().setAnnotationIntrospector(introspector);
mapper.getSerializationConfig().setAnnotationIntrospector(introspector);