如何将JSON字段映射到自定义对象属性?

时间:2015-04-20 11:13:56

标签: java json spring spring-web

我有一个简短的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);

3 个答案:

答案 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);