Používam RestKit na strane iOS a Jersey na strane Java na rozhovor s JSON.
RestKit posiela nasledovné:
{
"user": {
"emailAddress": "someuser",
"password": "somepassword"
}
}
Na strane Java je trieda User takto:
@Entity
public class User {
public String emailAddress;
public String password;
public List<UserForm> userForms;
... getters and setters ...
V službe Jersey mám nasledujúce:
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public User login(User someUser) throws IOException
{
...
Všetko v someUser
objekt je null. Takže si myslím, že sa snažím prinútiť Jersey, aby zabudol na koreňový uzol, pretože keď niečo pošle späť, má to podobu:
{
"emailAddress": "server",
"password": "serverpass",
}
Ak je to nejaká pomoc, môj web.xml obsahuje nasledujúce:
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.something.services;org.codehaus.jackson.jaxrs</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
Ospravedlňujeme sa, ale som trochu nováčik v Jersey a bol som vystrašený ako blázon, aby som našiel odpoveď, takže akákoľvek pomoc by bola veľmi ocenená. V predstihu, y "všetci!
odpovede:
1 pre odpoveď č. 1Ak chcete, aby RestKit odstránil user
kľúč od JSON (alebo radšej nepridať), nastavte rootKeyPath
na váš deskriptor žiadosti nil
.