2013-06-06 3 views
2

Я использую Jackson для сериализации класса JAXB, сгенерированного для JSON в Джерси. Пока сгенерированный JSON отлично работает, некоторые имена маркеров имеют перед ними @.Название токена JSON с @

например.

XSD определяет:

<xs:element name="uid" type="xs:long"/> 

это получает генерируется в классе Java, как:

private Long uid; 

с соответствующим получением и установкой. Использование стандартной Джексон ObjectMapper (с конфигурацией DEFUALT) сериализированную JSON является:

"@uid": 1 

Я прочитал документацию Джексона, и я не смог найти ничего, что указывает, почему это так. Есть ли способ заставить JSON сериализоваться как uid, а не @uid? Полагаю, мне также нужно понять, что означает значение @, потому что у некоторых свойств есть @, а некоторые - нет.

Благодарим за помощь.

+1

Возможно, это связано с тем, что это атрибут XML (и, если я не ошибаюсь, имена атрибутов и имена элементов в XML не могут иметь этот символ). Попробуйте задать список рассылки devel, если есть способы настроить имена атрибутов во время сериализации. – fge

+0

Включить полную подпись класса, который сериализуется по вашему описанию. Обязательно включите все поля вместе со своими аннотациями. – Perception

ответ

0

Этого недостаточно, чтобы знать наверняка. Во-первых, вы должны показать фактический объект Java (POJO), который вы используете, - Джексон не использует XML-схему для чего-либо. Это все о геттерах, сеттерах и аннотациях.

Но также возможно, что вы даже не можете использовать Джексон, так как это типичное поведение с помощью XML-инструментов, таких как Jettison и XStream; они, как правило, добавляют знак at, чтобы отличать «элементы от атрибутов» (что представляет собой разницу в XML, которую эти инструменты хотят сохранить).

Смежные вопросы