0

私はしばらくジャージーを使用してきましたが、Json を引数として取得する POST メソッドを実装しました。ただし、次のように機能したいと思います。

 // The json class to be used and returned
    @XmlRootElement
    public class Container 
    {
        private boolean isOk;
        private String message;

        public Container() {}

        public boolean getOk()
        {
            return this.isOk;
        }   

        public void setOk(boolean isOk)
        {
            this.isOk = isOk;
        }
    }

    // A service
    @Path("json/test")
    public class TestService 
    {
        @POST
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON)
        public Container readAndReturnMessage(Container receivedJson)
        {
            doSomething(receivedJson.getMessage());
            return receivedJson;
        }   
    }

残念ながら、これは機能していません。サービスに渡された未加工の json に問題はありませんが、コンテナー変数はすべて null です。ここでのアプローチは何ですか?代わりに String を引数として取り、Jackson/Gson を使用して逆シリアル化する必要がありますか?

4

2 に答える 2

2

ヘッダーを追加していない場合は、 POST要求にContent-Typeヘッダーを追加する必要があります。アプリケーションはapplication/jsonを使用しているため、 Content-Type: application/jsonを POST リクエストに追加する必要があり ます。

リクエスト本文の形式が次の場合: { "Container": { "isOk": "true", "message": "New message" } } null 値が返されます。

リクエストの本文は次の形式にする必要があります: { "isOk": "true", "message": "New message" } これは正常に機能します。

于 2015-04-25T10:18:47.727 に答える
0

クラスにゲッターとセッターを追加しますContainer

更新。Java Beans を作成するための規則を次に示します。命名セクションを参照してください。ところで、ブールフィールドで失敗しました。最良の方法:

boolean ok;

public boolean isOk(){
   return this.ok;
}

/* if setter is required */
public setOk(boolean ok){
   this.ok = ok;
}
于 2012-08-04T12:17:06.857 に答える