2012-06-27 2 views
2

Я использую класс JAXB и JSONProvider для генерации ответа клиенту в моих службах REST. И я нашел одну интересную вещь. У меня есть отображение:JSONProvider возвращает пустые объекты, такие как String

@XmlRootElement(name = "fooRoot") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class WSBar { 
    private WSFooTO foos; 
//... 
} 

@XmlRootElement(name = "foos") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class WSFooTO { 
    private WSDateTO one; 
    private WSDateTO two; 
    private WSDateTO three; 
    private WSDateTO four; 
//.... 
} 

Когда я устанавливаю в ответ пустые объекты, я имею в виду: просто new WSDateTO() и После того, как я Recive ответ так:

{"fooRoot":{ 
    "foos":{ 
     "one":"", 
     "two":"", 
     "three":"", 
     "four":"" 
    } 
}} 

Почему это происходит ? Я ожидаю, что это должно быть: «один»: нулевой, «два»: нулевой

ответ

1

Согласно JAXB tutorial отсутствие значения может быть выражена тремя различными способами:

  • элемент является опущено
  • с пустой строкой, используя @XmlElement(required = true) аннотацию
  • с Sepcial атрибутом xsi:nil использованием @XmlElement(nillable = true) аннотацию

Отвечая строго на ваш вопрос: JAXB не поддерживает перевод пустых объектов на null.

+0

Также посмотрите на http://stackoverflow.com/questions/858598/jaxb-marshalling-with-null-fields вопрос, который также показывает способ перевода пустых объектов. – Atticus

+0

Спасибо! Но я думаю, что это неправильно, когда объект преобразуется в String. Парсер JSON от клиента Android не работает. Потому что он ожидает Object, а не String. Не могли бы вы, пожалуйста, пообщаться, что мне делать в ситуации? – Andrew

+0

Я не понимаю, что вы хотите сделать. Вы спросили: «Почему это происходит?» Я указал, почему это происходит. Так работает JAXB. Что бы вы хотели делать теперь? Пожалуйста, уточните свой вопрос. BTW 'String' также является« объектом », поэтому ваш клиент Android (о котором вы должны дать некоторую информацию, если это проблема) должен работать. – Atticus

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