无法从START_ARRAY令牌中反序列化实例

时间:2016-08-05 08:58:35

标签: java json serialization jackson

我正在尝试将服务(json)的响应映射到对象。

当有可用数据时返回json值:

{
    "phone": "0712123123",
    "username": "aaa@bbb.com",
    "lastName": "aaa",
    "firstName": "bbb",
    "address": "New address",
    "email": "aaa@bbb.com",
    "notificationSettings": [
        {
            "eventType": "a1",
            "email": true,
            "notification": true,
        },
        {
            "eventType": "a2",
            "email": true,
            "notification": true,
        }
     ]
}

当该用户没有可用数据时的返回值:

[]

服务电话如下:

public UserDataDto getUserInfoService(String xAuthToken) {
        HttpHeaders headers = new HttpHeaders();
        headers.set("XAuth", xAuthToken);
        HttpEntity httpEntity = new HttpEntity(headers);
        try {
            ResponseEntity response = restTemplate.exchange(
                    baseUrl + getUserInfo, 
                    HttpMethod.GET, 
                    httpEntity, 
                    UserDataDtoDto.class, 
                    version);
            return (UserDataDto) response.getBody();
        } catch (HttpStatusCodeException e) {
            handleException(e);
            throw e;
        }
    }

我已经阅读了类似问题的其他响应,我知道该方法需要一个对象{},并且当给定用户没有可用数据时它会收到一个数组[],因此异常。我知道用UserDataDto []替换UserDataDto可以解决这个特殊问题。

我的问题是如何避免为这种情况制作新方法。有没有办法更新当前方法,以便它适用于两种情况:有或没有信息的用户。

0 个答案:

没有答案