Преобразование карты в POJO с исключением исключений Jackson ObjectMapper - PullRequest
0 голосов
/ 30 января 2020

У меня есть MultivaluedMap<String, String>, который представляет параметры формы запроса POST. Я хотел бы преобразовать POJO из этого класса только с теми полями, которые мне нужны для дальнейшей обработки. Я нашел несколько ответов, которые предлагают использовать convertValue() от Джексона ObjectMapper.

Конвертировать карту к POJO

public void process(MultivaluedMap<String, String> formParams) {
  ObjectMapper objectMapper = new ObjectMapper();
  final MyPojo myPojo = objectMapper.convertValue(formParams,MyPojo.class);
}

POJO

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyPojo {

    private String status;

    @JsonProperty("order_no")
    private String orderId;

    @JsonProperty("tid")
    private String transactionId;
}

Однако это не удается со следующим исключением:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
 at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: MyPojo["order_no"])

Вот так выглядит вход в отладчик:

Debugger screenshot

1 Ответ

0 голосов
/ 30 января 2020

Мне нужно заменить тип String на ArrayList<String>, который, кажется, работает:

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)

public class MyPojo {

    private ArrayList<String> status;

    @JsonProperty("order_no")
    private ArrayList<String> orderId;

    @JsonProperty("tid")
    private ArrayList<String> transactionId;
}
...