2013-04-02 4 views
4

У меня есть следующее.Требуется поле JSON с JAXB

@XmlRootElement 
public class SomeObject { 

    private String requiredField; 

    @XmlElement(name="address", required=true) 
    public String getRequiredField() { 
     return requiredField; 
    } 

    public void setRequiredField(String requiredField) { 
     this.requiredField = requiredField; 
    }  

} 

Однако, когда соответствующий ресурс Джерси потребляет JSON необходимо сделать этот объект успешно создает объект, с или без поля, аннотированный по мере необходимости.

Использование Джерси и JAXB, или непосредственно связанных с ними технологий, есть способ гарантировать, что значение требуемого поля будет присутствовать в потребляемом JSON? Что отсутствует в приведенном выше примере?

Пример:

То, что я хотел бы он, чтобы отклонить вызов, такие как следующий, как тело JSON не содержит значения для requiredField.

curl -i -X POST -H 'content-type:application/json' -d '{}' http://some/uri 

Скорее я бы хотел, чтобы что-то подобное работало.

curl -i -X POST -H 'content-type:application/json' -d '{"requiredField":"Hello, world!"}' http://some/uri 
+0

Если вы ищете нулевые значения для вывода с нулевым значением, а не как отсутствующий узел, вы можете найти следующее полезное: http://blog.bdoughan.com/2012/04/binding-to-json-xml-handling-null.html –

+0

Я добавил пример, чтобы быть более конкретным. –

+0

Marc M., вы нашли решение? –

ответ

1

Вы можете установить значение по умолчанию для своего поля.

@XmlRootElement 
public class SomeObject { 

    private String requiredField = "Hello world!"; 

    //... 
} 

теперь, если вы не установите новое значение для этого поля во время выполнения, то в формате JSON вы увидите строку "Hello world!"

+0

Не совсем то, что мне нужно. Мне нужно, чтобы пользователь предоставил значение для этого поля, но не задал значение поля по умолчанию, если оно не указано. Спасибо, хотя это, безусловно, интересная альтернатива. –

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