【问题标题】:Extends HashMap with custom fields for JSON converter使用 JSON 转换器的自定义字段扩展 HashMap
【发布时间】:2016-03-18 10:37:35
【问题描述】:

这是我扩展 HashMap 的类,因为响应 JSON 中有很多动态字段,但教育和就业是固定的,我希望这些应该与 PeopleEducation 和 PeopleEmployment 类映射

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Generated;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({ "_education", "_employment" })
public class People extends HashMap<String, Object> implements Map<String, Object> {
/**
 * 
 */
private static final long serialVersionUID = 1L;
@JsonProperty("_education")
private List<PeopleEducation> Education = new ArrayList<PeopleEducation>();
@JsonProperty("_employment")
private List<PeopleEmployment> Employment = new ArrayList<PeopleEmployment>();
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
 *
 * @return The Education
 */
@JsonProperty("_education")
public List<PeopleEducation> getEducation() {
    return Education;
}

/**
 *
 * @param Education
 *            The _education
 */
@JsonProperty("_education")
public void setEducation(List<PeopleEducation> Education) {
    this.Education = Education;
}

/**
 *
 * @return The Employment
 */
@JsonProperty("_employment")
public List<PeopleEmployment> getEmployment() {
    return Employment;
}

/**
 *
 * @param Employment
 *            The _employment
 */
@JsonProperty("_employment")
public void setEmployment(List<PeopleEmployment> Employment) {
    this.Employment = Employment;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
}

}

那么是否可以使用 Spring Rest 模板将这些字段映射到特定的类

ResponseEntity<People> response = restClient.getResource(url, headerMap,People.class);

【问题讨论】:

    标签: java json spring jackson resttemplate


    【解决方案1】:

    默认情况下,如果它是有效的 JSON,它将自动匹配。 如果响应是字符串格式,您必须使用ObjectMapper 解析并将其转换为对象。

    为了更好地理解,您能否也发布您的 JSON 字符串。

    【讨论】:

    • 我希望 spring Jackson 自动执行此操作,我已配置 Jackson2Message 转换器。
    猜你喜欢
    • 2022-09-22
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2014-10-18
    • 2012-05-01
    相关资源
    最近更新 更多