2016-08-09 80 views
0

Ich versuche Unmarshall ein JSON zu Java-Objekt. Ich habe ziemlich viele Beiträge gesehen, die über das Parsen von XML sprechen. Also ich hoffe, Frage ist duplizieren nichtJSON Unmarshalling javax.xml.bind.UnmarshalException: Unerwartetes Element (uri: "", lokal:

Meine Java-Klasse hat unter Anmerkungen

@XmlRootElement(name = "cpResponse") 
public class CPResponse { 

ich verwende org.apache.cxf.jaxrs.provider.json.JSONProvider von cxf-rt-rs-Dehn-Anbieter - Version - 2.7.3

Ich bekomme die Belo w Fehler

javax.xml.bind.UnmarshalException: unerwartetes Element (uri: "", local: "cpResponse")

+1

Ich vermute, Sie verwenden Jettison, bitte, posten Sie Ihre JSON Elemente zu sehen. Haben Sie eine Content-Type-Anwendung/json erhalten? Es scheint, dass Sie XML empfangen – pedrofb

+0

Sie sind @ArK korrekt. Das Problem war mit Jettison Bibliothek 1.3.x Version. Ich habe auf 1.2 heruntergestuft und das Problem wurde gelöst. –

Antwort

0

Ich bin nicht in der Lage die Java-Mapper-Klasse anzuzeigen. Für jedes Feld in json Sie zuordnen möchten, definieren Getter und Setter in Java Mapper Class.You unten als Daten von json zu java pojo lesen: jackson-databind-2.0.0 api verwenden Sie folgenden Code

verwenden können
ObjectMapper mapper = new ObjectMapper(); 
JsonMapperVO jsonMapperVO = mapper.readValue(jsonString.toString(), JsonMapperVO.class); 
0

Es ist wahrscheinlich Namespace Problem. Könnten Sie bitte für den Namensraum ""? :

@XmlRootElement(name = "cpResponse", namespace = "") 
public class CPResponse { 
+0

Ich habe versucht, wie Sie vorgeschlagen, aber keine Änderung. Ich bekomme dieselbe Ausnahme. Reicht es aus wenn ich nur @ client Seite gehe oder auch @ serverseitig geändert werden soll? –

0

Das Problem war mit Jettison Bibliothek 1.3.x Version. Ich habe auf 1.2 heruntergestuft und das Problem wurde gelöst.

Keine anderen Codeänderungen betroffen.