Я пытаюсь развязать Json Object, который я возвращаю из ответа Restful Service. Но это бросает исключение, делая unmarshalling?«Содержимое не допускается в прологе», а unmarshaling Json Object
MyClass.java
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MyClass
{
@XmlElement(name="id")
private String id;
@XmlElement(name="f-name")
private String fname;
@XmlElement(name="l-name")
private String lname;
// getters and setters for these
}
метод
распаковатьJAXBContext context = JAXBContext.newInstance(MyClass.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
URL url = new URL("http://localhost:8080/service-location");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
connection.connect();
MyClass myclass=(MyClass)unMarshaller.unmarshal(connection.getInputStream());
И когда я попытался с помощью какого-то клиента браузера я получаю надлежащий ответ, как показано ниже.
[
{
"fname": "JOHN",
"lname": "Doe",
"id": "abc123"
}
]
Но я пытаюсь сделать маршализацию в моем код клиента он бросает SAXParserException
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
Я не уверен, что я делаю неправильно. Этот способ сделать unmarshall объект JSON или есть ли другой способ сделать это?
ОБНОВЛЕНИЕ: РЕШЕНИЕ
Я зафиксировал это путем реализации Jackson's ObjectMapper
, а не обычный UnMarshaller
из JAXB
. Вот мой код
ObjectMapper mapper = new ObjectMapper();
JavaType type = mapper.getTypeFactory().constructCollectionType(List.class, MYClass.class);
mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
list = mapper.readValue(jsonString, type); // JsonString is my response converted into String of json data.
Вы указали свой JSON в массив, попробуйте без [и] –
Я попытался с Валида JSON в качестве тестового примера. Он все еще бросает эту ошибку. – SRy
@SotiriosDelimanolis .. Я тестирую спецификации, но ничего не нашел. Итак, с этой точки зрения все в порядке. – SRy