Nicht finden können, Deserialisieren für nicht-konkrete Collection-Typ

Bin ich mit dem jackson-Bibliothek zum anzeigen von JSON in Objekte. Ich habe vereinfacht das problem viel, dies ist, was passiert:

public class MyObject{

    public ForeignCollection<MySecondObject> getA(){
        return null;
    }

    public ForeignCollection<MyThirdObject> getB(){
        return null;
    }
}

Ich bin Parsen der eine leere JSON-string:

ObjectMapper mapper = new ObjectMapper();
mapper.readValue("{}", MyObject.class);

Auf readValue, bekomme ich diese Exception:

com.fasterxml.jackson.databind.JsonMappingException: Can not find a deserializer for non-concrete Collection type [collection type; class com.j256.ormlite.dao.ForeignCollection, contains [simple type, class com.test.MyThirdObject]]

Dies geschieht, wenn ich zwei get Methoden in der MyObject Klasse, die Rückkehr einer ForeignCollection. Das entfernen einer der get Methoden Ergebnisse keine Ausnahmen.

Ich bin wirklich überrascht von der Tatsache, dass der mapper sieht die get Methoden, es sollten nur die Felder, auf die ich hinweisen.

Was ist hier passiert?

  • Klingt wie die JSON-mapper versucht, die Zuordnung aller get* Methoden. Haben Sie versucht, die Rückgabe eines Collection statt? Möglicherweise haben Sie zu beschriften die JSON-Eigenschaften verwenden und nicht einen auf mySecondObjects. stackoverflow.com/questions/4410470/...
  • Vielen Dank für die Anmerkung-Hinweis, das macht das Leben viel einfacher! Allerdings ist das problem nicht gelöst worden ist. Ich habe etwas herausgefunden, und Sie veränderten die Frage ein bisschen.
  • Wo sind die set-Methoden? Wie würde deserializer "nur-Satz" auf den Feldern, ohne? Oder werden Sie nur nicht angezeigt? Geben Sie ab-setter oder Feld sollte Vorrang haben, obwohl getter muss auch berücksichtigt werden, wie zusätzliche Quelle für Anmerkungen und kann verwendet werden zum verfeinern geben.
  • Ich habe entfernt so viel wie möglich, hätte ich einige Felder wie @JsonProperty("name") private String myName.
InformationsquelleAutor nhaarman | 2013-02-13
Schreibe einen Kommentar