Невозможно десериализовать экземпляр PaymentResponse [] из маркера START_OBJECT. - PullRequest
0 голосов
/ 01 октября 2018

Невозможно прочитать ответ, используя объект отображения Джексона.выход из токена START_OBJECT.Здесь ввод JSON и сообщение об ошибке.PaymentResponse java pojo - это обычный код, к которому у меня нет доступа, чтобы добавлять аннотации.Любая помощь в добавлении конфигурации десериализации?

ObjectMapper objectMapper = new ObjectMapper();
PaymentResponse[] paymentResponse  = objectMapper.readValue(serverResponseStr, PaymentResponse[].class);

{
    "PaymentResponse[]": [
        {
            "uid": "111",
            "name": "kiran"
        },
        {
            "uid": "112",
            "name": "kumar"
        }
    ]
}

Can not deserialize instance of PaymentResponse[] out of START_OBJECT token

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of PaymentResponse[] out of START_OBJECT token
 at [Source: {"PaymentResponse[]": [{"uid": "111","name": "kiran"},{"uid": "112","name": "kumar"}]}

1 Ответ

0 голосов
/ 01 октября 2018

Идеально было бы, если бы вы могли изменить ответ на что-то вроде:

[{
        "uid": "111",
        "name": "kiran"
    }, {
        "uid": "112",
        "name": "kumar"
    }
]

Если вы не можете изменить его, попробуйте следующее:

ObjectMapper objectMapper = new ObjectMapper();
TypeFactory typeFactory = objectMapper.getTypeFactory();
JsonNode array = objectMapper.readValue(anotherResponseStr, JsonNode.class);
JsonNode paymentResponse = array.get("PaymentResponse[]");

List<PaymentResponse> p = objectMapper.readValue(paymentResponse.toString(), 
typeFactory.constructCollectionType(List.class, PaymentResponse.class));
...