Jaxb (json) unmarshall error, как разобрать данные без имени корневого элемента - PullRequest
0 голосов
/ 14 марта 2011

У меня есть данные JSON, у которых нет имени rootElement, которое выглядит следующим образом:

{
  name: "Anthony",
  source: "DS"
}

У меня есть класс java, следующий для демаршаллинга:

@XmlRootElement
@XmlAccessorOrder(XmlAccessOrder.UNDEFINED)
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class ObjectTest {
  private String name;
  private String source;

  /* with Getter & Setter for "name" & "source" */
}

Код демаршаллинга:

JAXBContext jc = JettisonMappedContext.newInstance(ObjectTest.class);
MappedNamespaceConvention c = new MappedNamespaceConvention();
JettisonMappedMarshaller u= new JettisonMappedMarshaller(jc, c);
String text = "{name: \"Anthony\", source: \"DS\"}";
u.unmarshal(new StringReader(text));

Исключение:

[javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"name"). Expected elements are <{}objectTest>]

Как я могу сделать unmarshalling на основе содержания выше? Спасибо

версия: 1.1 RC2

1 Ответ

1 голос
/ 31 января 2012

JSON установлен неправильно.

{"dataobjectname" : {name: "Anthony", source: "DS"}}

dataobjectname должно соответствовать имени переменной, определенной в методе.

...