Java — Не удается десериализовать экземпляр java.lang.Целое число из маркера START_OBJECT?

#java #arrays #json #serialization #pojo

Вопрос:

Я получаю следующую ошибку в своем приложении, когда пытаюсь передать POST объект person стороннему API:

 Can not deserialize instance of java.lang.Integer out of START_OBJECT token
 at [Source:
 (through reference chain: Person["postcode"]
 

Я думаю, проблема в том, что у меня почтовый индекс как целое число, тогда как в контракте API это массив json.

Как я могу представить a Json array в качестве поля в моем Java POJO?

ПОЖО:

 public class Person {

    @JsonProperty
    private Integer id;

    @JsonProperty("postcode")
    private Integer postcode;
    
    // other fields...
    
    }
 

Т. е. в ответе JSON от успешного СООБЩЕНИЯ "postcode" поле выглядит следующим образом:

 "postcode": [],
 

Комментарии:

1. Я действительно надеюсь postcode , что это не массив целых чисел, так что, вероятно, так и должно быть private String[] postcode; . Но трудно сказать, не зная, что в нем на самом деле содержится.

2. На самом деле, я верю, что это массив целых чисел…

3. Тогда private Integer[] postcode следует сделать свое дело. Надеюсь, вы никогда не получите почтовый индекс, начинающийся с 0 или содержащий не цифры.

4. спасибо, будет ли это также работать в качестве частного почтового индекса списка<Целое число>?

5. Я не знаю, можете ли вы сделать это напрямую. Смотрите эту статью для возможного решения.