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

How to map JSON fields to custom object properties?

我有一条带有一些字段的简单 json 消息,我想使用 spring-web.

将其映射到 java 对象

问题:我的目标 类 字段的名称与 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);

试试这个:

@JsonProperty("message")
private String value;

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

public class JsonEntity {
    @JsonProperty(value="message")
    private String value;
}

如果您熟悉它,您还可以使用 Jaxb 注释 marshal/unmarshal json 使用 Jackson

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