Десериализовать массив объектов со свойством int в массив целых, используя Джексона - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть следующий JSON ...

{
  "name":"MyThings",
  "things":[
    {
      "num":"123"
    },
    {
      "num":"456"
    }
  ]
}

Пока у меня есть большая часть картирования ...

@JsonIgnoreProperties(ignoreUnknown = true)
public class ThingList {
    private String name;
    private int[] nums;
}

Как мне по существу сделать карту из массива объектов в массив int с использованием Джексона?

1 Ответ

0 голосов
/ 06 сентября 2018

Для этого вы можете использовать специальный десериализатор:

class DeSerializer extends StdDeserializer<ThingList> {

  protected DeSerializer() {
    super(ThingList.class);
  }

  @Override
  public ThingList deserialize(JsonParser p, DeserializationContext ctxt) {
    // use p.getText() and p.nextToken to navigate through the xml and construct ThingList object
    return something;
  }

Инициализируйте анализатор следующим образом с десериализатором:

ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("configModule", Version.unknownVersion());
module.addDeserializer(ThingList.class, new DeSerializer());
mapper.registerModule(module);
ThingList tl = mapper.readValue(<json string>, ThingList.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...