it-swarm.com.de

Wie können JSON-Feldnamen unterschiedlichen Objektfeldnamen zugeordnet werden?

Was ist der gleiche Weg in Jackson Json Annotation für die folgenden Jax-B-Annotationen?

Ich muss json anstelle von xml erstellen und muss die herkömmlichen jackson-Anmerkungen kennen, die in jax-b äquivalent angegeben sind.

  1. ein Feld umbenennen.
  2. verwenden Sie Getter anstelle von Feldern.

Diese Funktionen sind besonders wichtig, wenn der Name des json/xml-Elements ein in Java reserviertes Word ist. __ wie "new", "public", "static" usw.

Damit wir die POJO-Felder mit "_new_", "_public_", "_static_" usw. benennen müssen,

verwenden Sie jedoch die Annotation jax-b, um sie in den generierten XML-Elementen (und Json-Elementen) in "new", "public", "static" usw. umzubenennen.

Umbenennen eines Feldes

@XmlAccessorType(XmlAccessType.FIELD)
public class Person{
    @XmlElement(required = true)
    protected String name;
    @XmlElement(required = true)
    protected String address;
    @XmlElement(name = "contractor")
    protected boolean _restricted_ ;
    @XmlElement(name = "new")
    protected boolean _new_ ;
}

Umleitung auf Property Getter umleiten (Ich denke, so wird es in Jax-B gemacht)

@XmlAccessorType(XmlAccessType.PROPERTY)
public class Person{
    protected String name;
    protected String address;
    protected boolean _restricted_ ;
    protected boolean _new_ ;

    @XmlElement(required = true)
    protected String getName() {return name;}
    @XmlElement(required = true)
    protected String getAddress() {return address;}
    @XmlElement(name = "contractor")
    protected boolean getRestricted() {return _restricted_;}
    @XmlElement(name = "new")
    protected boolean getNew(){return _new_;}
}
30
Blessed Geek

Wahrscheinlich ist es ein bisschen spät, aber trotzdem ..

sie können eine Eigenschaft einfach umbenennen

@JsonProperty("contractor")

Und standardmäßig verwendet Jackson den Getter und Setter, um zu serialisieren und zu deserialisieren.

Für detailliertere Informationen: http://wiki.fasterxml.com/JacksonFAQ

76
Enrichman

In einigen Beispielen können Sie auch Getter und Setter verwenden, um ihn in ein anderes Feld umzubenennen

public class Sample {

    private String fruit;

    @JsonProperty("get_Apple")
    public void setFruit(String fruit) {
        this.fruit = fruit;
    }

    @JsonProperty("send_Apple")
    public String getFruit() {
        return fruit;
    }

}
0
Vijai

Bitte beachten Sie, dass die richtige JavaEE-API dafür die Annotation javax.json.bind.annotation.JsonbProperty ist. Natürlich sind Jackson und andere nur einige Implementierungen der JSON-Binding-API. Sie werden dies wahrscheinlich einhalten.

0