JSON массив в Список объектов: UnrecognizedPropertyException - PullRequest
0 голосов
/ 09 марта 2020

Я не смог найти ошибку в следующем массиве json строка. Я не уверен, правильно ли я картирую. Я надеюсь, что друг поможет мне.

Спасибо ...

JSON строковое значение указано ниже;

[
 {
  "PaymentRequest": {
    "RequestGuid": 123
     ...
    }
  },{
  "PaymentRequest": {
    "RequestGuid": 456
     ...
    }
} 
]

Определение объекта аналогично приведенному ниже;

@JsonRootName(value = "PaymentRequest")
@JsonIgnoreProperties(ignoreUnknown = true)
public class PaymentRequest{
@JsonProperty("RequestGuid")
String requestGuid; 
... 
}

My класс-обёртка как ниже;

public class MyWrapper{
PaymentRequest paymentRequest;
//setter getter
}

Моя реализация похожа на приведенную ниже.

ObjectMapper mapper = new ObjectMapper();
List<MyWrapper> users = mapper.readValue(jsonString, new TypeReference<List<MyWrapper>>() {});

Результат: com.faster xml .jackson.databind.ex c .UnrecognizedPropertyException: нераспознанное поле «PaymentRequest» ( класс vpos.dto.MyWrapper), не помеченный как игнорируемый (одно известное свойство: paymentRequest)] в [Source: (StringReader); строка: 3, столбец: 24] (через цепочку ссылок: java .util.ArrayList [0] -> vpos.dto.MyWrapper ["PaymentRequest"])

1 Ответ

0 голосов
/ 09 марта 2020

Проблема в том, что свойство в json называется PaymentRequest, а ваше поле равно paymentRequest с более низким p в начале. Вы можете добавить аннотацию @JsonProperty("PaymentRequest") к своему полю или изменить стратегию именования свойств следующим образом:

ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...