如何将 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);
我有一条带有一些字段的简单 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);
试试这个:
@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);