Frage

Ich habe folgendes JSON:

{ 
    fields : {
            "foo" : "foovalue",
            "bar" : "barvalue"
    }
}

Ich schrieb einen pojo wie folgt:

public class MyPojo {

    @JsonProperty("fields") 
    private List<Field> fields;

    static class Field {
        @JsonProperty("foo") private String foo;
        @JsonProperty("bar") private String bar;

        //Getters and setters for those 2
}

Das nicht offensichtlich, weil meine json Feld „Felder“ ein hashmap ist, und nicht eine Liste.
Meine Frage ist: Gibt es eine „magische“ Anmerkung, die Jackson den Kartenschlüssel als pojo Eigenschaftsnamen erkennen machen kann, und weisen Sie die Kartenwert zu den pojo Eigenschaftswerten

P. S .: Ich möchte wirklich nicht meine Felder haben, das Objekt als ...

private Map<String, String> fields;

... weil in meiner realen Welt json Ich habe komplexe Objekte in dem Kartenwert, nicht nur Strings ...

Danke; -)

Philippe

War es hilfreich?

Lösung

Ok, für das JSON, würden Sie nur ändern Sie Ihr Beispiel etwas, wie:

public class MyPojo {
  public Fields fields;
}

public class Fields {
  public String foo;
  public String bar;
}

da Struktur von Objekten Bedürfnissen mit Struktur von JSON auszurichten. Sie könnten Getter und Setter statt öffentlichen Bereichen natürlich nutzen (und sogar Konstrukteuren statt Setter oder Felder), das ist nur das einfachste Beispiel.

Ihre ursprüngliche Klasse würde produzieren / konsumieren JSON mehr wie:

{ 
  "fields" : [
    {
      "foo" : "foovalue",
      "bar" : "barvalue"
    }
  ]
}

da Listen Karte zu JSON-Arrays.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top