Проверка дублированных свойств JSON через Джексона - PullRequest
3 голосов
/ 13 апреля 2011

Я использую Джексона и хочу убедиться, что входная строка JSON не содержит повторяющихся свойств, таких как:

{"a" : 1, "a" : 0}

После ввода фрагмента Джексона обрабатывается входная строка без каких-либо ошибок и даже возвращаемого значения:

JsonNode jsonSelect = mapper.readTree("{ A : 1, A : 0}"); System.out.println(jsonSelect.getFieldValue("A")); // prints 0

Есть ли возможность проверить дубликаты через Джексона?

PS Поддерживает ли формат JSON дублированные свойства вообще?Я не нашел никаких ограничений по этому поводу в спецификации 1014 *.Также org.json.JSONObject выдает исключение для дубликатов, которое не дает мне ответа - {"a" : 1, "a" : 0} правильно сформировано в соответствии со стандартом.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Спецификация JSON указывает, что дубликаты не считаются действительными, но анализаторы не обязаны ничего с ними делать. С практической точки зрения отслеживание всех видимых свойств добавляет издержки, которые могут не иметь смысла на уровне потокового анализатора.

Что касается Джексона, раньше он имел обнаружение дубликатов на уровне привязки данных, но я думаю, что он не включен в данный момент. Это может быть добавлено довольно легко при работе с Картами. Если это то, что вам нужно, возможно, имеет смысл подать запрос на функцию или запросить в списке пользователей (особенно, если другие пользователи тоже захотят эту функцию, что повысит вероятность ее добавления в ближайшее время).

Если все, что вы хотите сделать, это просто проверить, вы можете создать подкласс Map, заставить его генерировать исключение для дубликата. Или просто установите флаг в подклассе, который вы можете проверить, если хотите.

0 голосов
/ 13 апреля 2011

JSON не поддерживает дублированные свойства.Таким образом, если ваш ввод гарантированно будет действительным JSON, вам не нужно проверять его.

...