Spring Android映射不适用于pojo

时间:2017-07-21 17:38:16

标签: android spring

我收到JSON

[{"LocationId":1,"LocationCode":"Area A"},{"LocationId":2,"LocationCode":"Area B"}]

使用spring在Android应用程序中使用web api,但无法映射到POJO:

@JsonIgnoreProperties(ignoreUnknown = true)
public class DataLocation {
    private String LocationId;
    private String LocationCode;

    public  String getLocationId(){
        return LocationId;
    }
    public  String getLocationCode(){
        return  LocationCode;
    }
}

这是获得json的代码:

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<DataLocation[]> forNow = restTemplate.getForEntity(url, DataLocation[].class);

enter image description here

任何人都知道为什么它没有映射?

修改

link有助于创建pojo,可以通过json转换为spring。因此,结果POJO必须如下所示:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
        "LocationId",
        "LocationCode"
})
public class DataLocation {

    @JsonProperty("LocationId")
    private Integer locationId;
    @JsonProperty("LocationCode")
    private String locationCode;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    @JsonProperty("LocationId")
    public Integer getLocationId() {
        return locationId;
    }

    @JsonProperty("LocationId")
    public void setLocationId(Integer locationId) {
        this.locationId = locationId;
    }

    @JsonProperty("LocationCode")
    public String getLocationCode() {
        return locationCode;
    }

    @JsonProperty("LocationCode")
    public void setLocationCode(String locationCode) {
        this.locationCode = locationCode;
    }

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

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

}

1 个答案:

答案 0 :(得分:1)

如果你很好奇,原因可能是因为将字段的名称大写这样是一种非常糟糕的做法。

通常,如果提供的JSON是标准的camelCase,kebab-case,snake_case,Spring将能够处理这些映射。

对于奇怪的情况,它不能@JsonProperty是一个非常方便的工具,特别是当你需要在setter中转换奇数值时等。