Wie konvertieren von json in POJO in java mit jackson

Ich bin mit spring 3.1.2, und ich muss zum Parsen eines json-Objekts in POJO.
Das ist der json-das muss ich analysieren:

{
"Person" : {
    "id" : "2"
 },
"Dog" : {
    "dateOfBirth" : "2012-08-20 00:00:00",
    "price" : "10.00"
    }
}

Ich brauche zu konvertieren, das json-Objekt (die ist zusammengesetzt aus zwei Objekten) in ein POJO, hier ist es:

public class MyClass{
     public MyClass(){}
     public MyClass(String personsId, TimeStamp dogsDateOfBirth, BigDecimal dogsPrice){
     .... //assign each parameter to the appropriate field
     }
     private String personsId;
     private TimeStamp dogsDateOfBirth;
     private BigDecimal dogsPrice;
     //... Getters and Setters for each field
}

Für diese Angelegenheit, die ich verwendet ObjectMapper mapper = new ObjectMapper();
Nun da habe ich mehrere json-Objekte mein code sieht wie folgt aus:

    String json = ... ;//A json with several objects as above
    JsonNode tree = mapper.readTree(json);
    Iterator<JsonNode> iter = tree.path("data").getElements();
    while (iter.hasNext()){
        JsonNode node = iter.next();
        MyClass myClass = mapper.readValue(node, MyClass.class);
        ... //do something with myClass object
    }

Wenn ich diese ausführe - bekomme ich die folgende exception:

org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class ...MyClass]: can not instantiate from JSON object (need to add/enable type information?)

Ich habe versucht, zu erstellen eine einfache POJO - Person:

public class Person{
        private String id;          
        public Person(){}
        public Person(String id){
            this.id = id;
         }
         ... //Getter and Setter
    }

die folgenden Schritte aus:

Person person = mapper.readValue(node.path("Person"), Person.class);

Bekomme ich diese (gleiche) Ausnahme:

org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class ...Person]: can not instantiate from JSON object (need to add/enable type information?)

Habe ich versucht zu Lesen, die über die geben Sie Informationen - konnte aber nicht verstehen, wie es kann mir hier helfen.

Wie kann ich umwandeln dieses json in mein POJO?

Dank.

  • haben Sie versucht, das entfernen Ihrer speziellen Konstruktor und nur mit dem no-args? Sieht aus wie es ist irgendwie immer verwirrt über Ihre Konstruktoren.
  • Ja das habe ich versucht - aber ich bekomme immer noch die gleiche exception.
  • Ich habe versucht, um dieses Problem zu reproduzieren, aber ich kann nicht. Ich bin mit der jackson von fasterxml jedoch nicht von codehaus. Ich lese das json direkt aus dem string anstelle der aus dem Knoten. Das funktioniert für die person, Beispiel. Für die andere ist es nicht, da haben Sie diese seltsame Kombination von Gegenständen gibt. Sie werden wahrscheinlich verwenden, dazwischen Darstellung.
  • Hi - ich habe gerade versucht mapping aus einem string ({"id":"2"}) und es immer noch nicht funktioniert - die gleiche Ausnahme.
  • Folgendes funktioniert bei mir: MyClass myClass = new ObjectMapper().readValue("{\"id\" : \"2\" }".getBytes(), MyClass.class) mit MyClass eine einfache bean mit einem String-Feld: id.
  • Hallo, ich gepostet eine Antwort - bitte werfen Sie einen Blick.

InformationsquelleAutor Noam | 2012-08-27
Schreibe einen Kommentar