Ich versuche, einen Dienst zu schreiben, der ein JSON- oder XML-Objekt in einer POST-Anfrage akzeptiert. Ich habe erfolgreich einen GET-Request-Handler geschrieben, der mein Objekt als XML oder JSON zurückgibt, wie in der Accept-Datei der Kopfzeile gefordert. Wenn ich an den Dienst mit JSON als den Körper der Anforderung senden, wird das Java-Objekt in meiner POST-Methode nicht mit den Werten aus dem JSON gefüllt.GAE Jersey RESTful Service POST JSON
Wenn ich die POST-Methode einbringe, hat das Java-Objekt "user" vom Typ User null Werte für die Eigenschaften. Das Objekt ist nicht null selbst, nur die Eigenschaften.
Dies ist die JSON per Post
{"user":{"logon":"kevin","password":"password","personid":"xyz"}}
Und hier ist meine Klasse
package com.afalon.cloud.contracts;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.jdo.annotations.Extension;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
@PersistenceCapable
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.NONE)
public class User {
@Persistent
@XmlElement(name="logon")
private String logon;
@Persistent
@XmlElement(name="password")
private String password;
@Persistent
@XmlElement(name="personid")
private String personid;
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
@XmlElement(name="userid")
private String userid;
public User() {}
public void setLogOn(String value) {
logon = value;
}
public String getLogOn() {
return logon;
}
public void setPassword(String value) {
password = value;
}
public String getPassword() {
return password;
}
public void setPersonId(String value) {
personid = value;
}
public String getPersonId() {
return personid;
}
public String getUserId() {
return userid;
}
Eigentlich haben Sie ein Objekt mit der Eigenschaft 'user' gepostet, das" User "enthielt. Objekte werden mit {}, Arrays mit [] bezeichnet. Es gibt keine Liste an sich. –