Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson反序列化bellow JSON属性_Java_Json_Spring_Jackson - Fatal编程技术网

Java Jackson反序列化bellow JSON属性

Java Jackson反序列化bellow JSON属性,java,json,spring,jackson,Java,Json,Spring,Jackson,对于给定的列表,我想获取多个(ParameterizedTypeReference responseType),在这种情况下,我想直接获取一个列表,但由于帐户列表封装在另一个对象中,因此我得到了一个错误,如下所示: { "accounts": [ { "accountUid": "c75deb59-5d52-4a23-af7b-fce29927ce9d", &quo

对于给定的
列表
,我想
获取多个(ParameterizedTypeReference responseType)
,在这种情况下,我想直接获取一个
列表
,但由于帐户列表封装在另一个对象中,因此我得到了一个错误,如下所示:

{
    "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"
    }
]
波乔

RestRequestTemplate.java

public List fetchMultiple(参数化类型引用responseType){
返回新的RestTemplate().exchange(this.url、this.httpMethod、this.request、responseType).getBody();
}
AccountsServiceImpl.java

public List getAccounts(){
RestRequestTemplate RestRequestTemplate=新的RestRequestTemplate(获取帐户,HttpMethod.GET,Collections.EMPTY\u映射);
返回restRequestTemplate.fetchMultiple(新的ParameteredTypeReference(){});
}

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

在fetchMultiple(ParameterizedTypeReference-responseType)方法中,是否有任何特定的理由将List作为参数?如果没有,我们可以将其更改为只获取多个(ParameterizedTypeReference responseType)您得到的错误是什么?com.fasterxml.jackson.databind.exc.MismatchedInputException:无法在[Source:(PushbackInputStream);第1行,第1列]处反序列化
java.util.ArrayList
超出起始\u对象标记的实例我希望将
List
作为参数,因为我正在寻找一个通用的解决方案,如果相反,我将
T
作为参数,我将需要实例化
AccountResponse
,实现如下:public List fetchMultiple(ParameterizedTypeReference responseType){AccountResponse response=(AccountResponse)new restemplate().exchange(this.url,this.httpMethod,this.request,responseType).getBody();return(List)response.getAccounts();}
@Data
public class Account {

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

}
public List<T> fetchMultiple(ParameterizedTypeReference<List<T>> responseType) {
        return new RestTemplate().exchange(this.url, this.httpMethod, this.request, responseType).getBody();
}
public List<Account> getAccounts() {
   RestRequestTemplate restRequestTemplate = new RestRequestTemplate(GET_ACCOUNTS, HttpMethod.GET, Collections.EMPTY_MAP);
   return restRequestTemplate.fetchMultiple(new ParameterizedTypeReference<List<Account>>() {});
}