2016-08-31 2 views
-1

Мне нужно преобразовать строку JSON в объект Java. Я использую Jackson ObjectMapper для чтения JSON. JSON Строка что-то вроде этого: -java objectmapper readvalue чтение неправильной строки

"{"emailId":"[email protected]","accessToken":"accTok"}4".

Когда я использую objectMapper.readValue() для чтения JSON строки к определенному классу назначения, он должен бросить исключение из-за JSON строк, добавленный на 4. Что должен ли я делать так, чтобы можно было читать только действительный JSON, а в других случаях он генерирует исключение?

+0

Просто удалите задний конец * 4 * в конце строки. –

ответ

0

К Джексону, GSON и другим, строка JSON с некоторыми символами, добавленными после последнего }, действительна JSON до тех пор, пока то, что содержится между {}, является действительным JSON.

Как заявил член FasterXML (Jackson) команды:

Да. Это по дизайну. Если вы хотите поймать такие проблемы, вам нужно построить JsonParser, продвигайте его вручную. Существование нескольких значений на уровне корня не считается проблемой действительности.

Ссылка: https://github.com/FasterXML/jackson-databind/issues/726

Так что, если вам нужно применять «чистые» JSON вам придется расширить парсер по умолчанию с собственной функциональностью. Тем не менее, IMO, если все в порядке с парсером по умолчанию, это тоже должно быть хорошо (если мы не имеем дело с каким-то сценарием несовместимости между языками здесь).