Ошибка разархивирования JSON без корневого элемента

#json #jaxb

#json #jaxb

Вопрос:

У меня есть веб-служба RESTful, в которую я отправляю и помещаю Entry объекты. Однако он ищет корневой элемент для JSON и XML, например:

 { "Entry": {
   "name": "John Doe",
   "phone_number": "555-1234",
    .
    . 
    .
}
  

Однако, основываясь на примерах, которые я видел с использованием ContextResolver , TelephoneBookEntry корневой элемент не должен требоваться при чтении или возврате Entry объектов.

 @Provider
@Produces({ APPLICATION.XML, APPLICATION.JSON })
public class JaxBEntryContextResolver implements ContextResovler<JAXBCONTEXT> {
    private static final Class<?>[] classes = {Entry.class};
    private static JAXBContext context;

    static {
        try {
            context = JAXBContext.newInstance(classes);
        } catch (JAXBException e) {
        }
    }

    public JaxBEntryContextResolver() {
    }

    @Override
    public JAXBContext getContext(Class<?> type) {
        JAXBContext ret = null;
        if(Arrays.asList(classes).contains(type)) {
           ret = context;
        }
        return ret;
    }
}         

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Entry {
    @XmlElement
    private String name;
    @XmlElement
    private String phone_number;
    .
    .
    .
}
  

Я думаю, что мой ContextResolver класс довольно стандартный, поэтому я не уверен, что происходит не так. Я хотел бы иметь возможность публиковать JSON или XML без использования корневого элемента.

ОБНОВЛЕНИЕ: я также пробовал без использования `XmlRootElement, но это ничего не дало. Кроме того, я использую Jersey 2.17, поэтому я не уверен, почему разворачивание не происходит по умолчанию.

Комментарии:

1. какая это версия джерси? В новых версиях 2.x используется jackson или другой поставщик JSON, который не будет искать корневые элементы в JSON.

2. Я использую 2.17 @ulab

Ответ №1:

Попробуйте добавить имя корневого элемента в аннотацию XmlRootElement

 @XmlRootElement(name = "TelephoneBookEntry")
  

Комментарии:

1. Я пробовал это, но он все еще ищет корневой элемент, который должен присутствовать в JSON или XML