Джексон Динамическое отображение Джсона с Классом автоматически - PullRequest
0 голосов
/ 09 октября 2018

Мой объект json является динамическим, может быть около 10 -15 типов динамического отклика json, который я получу,

EX: {"a": "B"}, {"a": [a, c, d]}, {a:b, d: []}, {a: []}, {a: [], b:[]} 
these are possible types i have define.

//Before writing the below line, I have to identify the response belongs 
to the correct Class Type and Convert the response into the corosponding Java Class. 

A aResponse = mapper.convertValue(jsonResponse(), A.class );

Исходя из моего кода выше, ответ всегда учитывает использование A.class и будетвыбросить исключение.

Как определить, принадлежит ли ответ указанному классу, и преобразовать его?

1 Ответ

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

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

public class Test {
  public static void main(String[] args) throws Exception {
    ObjectMapper mapper = new ObjectMapper();
    final SimpleModule module = new SimpleModule("configModule",   Version.unknownVersion());
    module.addDeserializer(Root.class, new DeSerializer());
    mapper.registerModule(module);
    Root readValue = mapper.readValue(<json source>);
  }
}

class DeSerializer extends StdDeserializer<Root> {

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

  @Override
  public Root deserialize(JsonParser p, DeserializationContext ctxt) throws Exception {
    // use p.getText() and p.nextToken to navigate through the json, conditionally check the tags and parse them to different objects and then construct Root object
    return new Root();

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...