2013-06-18 1 views
3

Я запускаю образец (который больше не могу найти) от Blaise Doughans blog на Glassfish 3 с использованием EclipseLink 2.5 MOXy для службы JAXB.Unmarshal список одиночных элементов не работает

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Company { 

    @XmlElementWrapper(name="employees") 
    @XmlElement(name = "employee", type=Employee.class) 
    private List<Employee> employees; 
} 

@XmlAccessorType(XmlAccessType.FIELD) 
public class Employee { 
    private String id; 
    private String name; 
} 

Я добавил некоторые аннотации к классам, для получения желаемой структуры JSon:

{ 
    "employees": [ 
    { 
     "id": "1", 
     "name": "Jane Doe", 
     "report": [] 
    } 
    ] 
} 

Когда я пытаюсь распаковать этот JSON он, к сожалению, не удается, возвращая объект с пустым списком сотрудников.
Добавление другого элемента в список JSON ИЛИ удаление работ @XmlElementWrapper.
Но я хочу, чтобы ключевой элемент назывался employees, поэтому мне нужно использовать аннотацию обертки или нет?

Edit:

public class MyApplication extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     HashSet<Class<?>> set = new HashSet<Class<?>>(2); 
     set.add(MOXyJsonProvider.class); 
     set.add(Index.class); 
     return set; 
    } 

    @Override 
    public Set<Object> getSingletons() { 
     MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider(); 

     moxyJsonProvider.setAttributePrefix("@"); 
     moxyJsonProvider.setFormattedOutput(true); 
     moxyJsonProvider.setIncludeRoot(false); 
     moxyJsonProvider.setMarshalEmptyCollections(true); 
     moxyJsonProvider.setValueWrapper("$"); 
     moxyJsonProvider.setWrapperAsArrayName(true); 

     HashSet<Object> set = new HashSet<Object>(1); 
     set.add(moxyJsonProvider); 
     return set; 
    } 

} 

ответ

4

Я подтвердил этот вопрос, что вы видите и открыли следующую ошибку:

UPDATE

Исправление этой проблемы было проверено в потоках EclipseLink 2.5.1 и 2.6.0. Вы можете получить исправление в соответствующих ночных сборках по следующей ссылке, начиная 19 июня 2013:

+0

Спасибо. Так что я мог бы захватить сегодняшнюю ночную сборку, чтобы получить фиксированную версию? – Imperative

+1

@Imperative - Я поставлю исправление сегодня и завтра вы сможете захватить ночную сборку 19 июня. Обычно он доступен в утреннее восточное время. –