2010-12-09 4 views
0

Я использую RESTEasy, чтобы написать веб-службу RESTful и попытаться написать ответ, содержащий HashMap. Веб-сервис создает либо JSON, либо XML. Карта JSON верна, но на карте XML нет контента. Предметом RESTEasy @WrappedMap является маршалирование карт в XML.RESTEasy @WrappedMap

@XmlRootElement(name="Response") 
public class RootResponse { 
    private HashMap<String, String> test; 
    public RootResponse() { 
    test = new HashMap<String, String>(); 
    test.put("Fred", "Wilma"); 
    test.put("Barney", "Betty"); 
    } 
    @XmlElement 
    @WrappedMap(map="test", key="name", entry="spouse") 
    public HashMap<String, String> getTest() { 
    return this.test; 
    } 
} 

выход JSON:

{ 
    "test": { 
    "Fred": "Wilma", 
    "Barney": "Betty" 
    } 
} 

выход XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Response> 
    <test/> 
</Response> 

я получаю тот же результат, если я оставлю вне @WrappedMap аннотацию.

Does @WrappedMap не работает для свойств?

ответ

0

Я знаю, что прошло какое-то время с тех пор, как вы разместили этот вопрос, но я все же хочу поделиться тем, что я недавно узнал, в случае, если кто-то еще может наткнуться на этот вопрос.

@WrappedMap в соответствии с this documentation помогает только изменить имя элементов в выходном XML. Что касается того, почему вы не можете заставить JAXB выводить XML из HashMap, я думаю, что у this page есть объяснение.

Надеюсь, это поможет.