2010-11-23 12 views
4

POSTリクエストでJSONオブジェクトまたはXMLオブジェクトを受け入れるサービスを作成しようとしています。私は正常にヘッダーの受け入れで要求されたXMLまたはJSONとして私のオブジェクトを返すGET要求ハンドラを書いている。リクエストの本文としてJSONを使用してサービスにPOSTすると、POSTメソッドのJava Objectがjsonの値で埋められません。GAE Jersey RESTfulサービスPOST JSON

@POST 
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public void postUser(@Context HttpServletRequest Req, User user) 
{ 
    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    try 
    { 
     pm.makePersistent(user); 
    } 
    finally 
    { 
     pm.close(); 
    } 

} 

私はPOSTメソッドタイプユーザーのJavaオブジェクト「利用者」でブレイクプロパティのnull値を持っています。オブジェクトはnullではなく、プロパティのみです。

これは、POST

{"user":{"logon":"kevin","password":"password","personid":"xyz"}} 

から提出されたJSONされており、ここでの問題は、このような明白な解決策を持っているので、私のクラスは

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; 
} 

答えて

5

ある多分誰が私の質問に答えていません!

私は自分の間違いに気付いた後、私自身の質問に答えることができます。

私は編集ので、もしUserオブジェクトのリストとしてフォーマットされた提出したJSON本体

{"user":{"logon":"kevin","password":"password","personid":"xyz"}} 

私@POSTハンドラはのリストを期待されていないため、すべての作品

{"logon":"kevin","password":"password","personid":"xyz"} 

Userオブジェクトです。代わりに、 List<User>パラメータを受け入れるように@POSTハンドラを適応させることができます!

+1

実際には、「User」というプロパティを持つオブジェクトを「User」という名前で投稿していました。オブジェクトは{}で、配列は[]で表されます。リスト自体はありません。 –

関連する問題