Я выясняю, почему простая установка десериализации Jackson JSON не работает на моем явно сломанном Json.В моем приложении я ДОЛЖЕН подтвердить, что ввод является действительным json, прежде чем выполнять сопоставление с типом Java.
final String json = "[\"plop\"]]]]]]]]]]]]]]]]";
final ObjectMapper om = new ObjectMapper();
final JsonFactory jf = new JsonFactory();
jf.setCodec(om);
final JsonParser jp = jf.createParser(json);
jp.disable(JsonParser.Feature.ALLOW_TRAILING_COMMA);
jp.readValueAsTree()
(я запускаю это в IntelliJ Evaluate ?)
Вы видите, что мой JSON имеет многосвисающий массив близко] как я выберу.Парсер не заботится о них.
Другой мусор, который, по-видимому, разрешает эта настройка:
final String json = "{}]]]]";
final String json = "[{},[]]]]]]]]";
final String json = "[{},{}]}}}}";
Видите ли, проблема не сводится к висячему] - такая же проблема для}.
Интересно, перестанет ли парсер искать материал после того, как будет замечен последний ожидаемый результат, а не потреблять весь ввод.
Есть идеи, кто-нибудь?Буллер?
Рич