繁体   English   中英

杰克逊反序列化波纹管JSON属性

[英]Jackson deserialization bellow JSON property

我想为给定的List<T> fetchMultiple(ParameterizedTypeReference<List<T>> responseType) ,在这种情况下,我想直接获取List<Account>但我收到错误,因为帐户列表封装在另一个对象,如下图:

{
    "accounts": [
        {
            "accountUid": "c75deb59-5d52-4a23-af7b-fce29927ce9d",
            "defaultCategory": "b4189da5-7688-42d0-86e3-14ae9031e01d",
            "currency": "GBP",
            "createdAt": "2020-08-05T16:50:50.536Z"
        }
    ]
}

有一些 Jackson 注释可以以某种方式对其进行过滤,以便像这样进行处理:

[
    {
        "accountUid": "c75deb59-5d52-4a23-af7b-fce29927ce9d",
        "defaultCategory": "b4189da5-7688-42d0-86e3-14ae9031e01d",
        "currency": "GBP",
        "createdAt": "2020-08-05T16:50:50.536Z"
    }
]

POJO

@Data
public class Account {

    private String accountUid;
    private String defaultCategory;
    private String currency;
    private String createdAt;

}

RestRequestTemplate.java

public List<T> fetchMultiple(ParameterizedTypeReference<List<T>> responseType) {
        return new RestTemplate().exchange(this.url, this.httpMethod, this.request, responseType).getBody();
}

AccountsServiceImpl.java

public List<Account> getAccounts() {
   RestRequestTemplate restRequestTemplate = new RestRequestTemplate(GET_ACCOUNTS, HttpMethod.GET, Collections.EMPTY_MAP);
   return restRequestTemplate.fetchMultiple(new ParameterizedTypeReference<List<Account>>() {});
}

确实有一个注释可以忽略根对象。 它被称为@JsonUnwrapped 使用该注释对您的方法进行注释,并且您的json应该没有根对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM