2016-09-20 4 views
2

私は以下のクラスを持っています。SpringのJSONObjectへのRequestbodyのマッピング

class ExampleBean{ 
    public String Name; 
    public JSONObject data; 
} 

と私は次のようである@GETハンドラがあります。dataだった場合

{ 
    "Name":"Example", 
    "data":{ 
     "hello":"world", 
     "some":"value" 
    } 
} 

すべてが完璧に動作します:私は、次のJSONがExmampleBeanにマッピングすることにしたい

@GET 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response getData(ExampleBean dataBean) 
{ 
    // some usage code here 
} 

を2つのパブリックフィールドがhellosomeとなっています。しかし、dataは、実際にフィールドまたは関連するセッターを持たないJSONObjectであるため、着信要求からオブジェクトを形成するときにdataプロパティを無視すると、Unrecognized field "hello" (Class JSONObject), not marked as ignorable at [Source: [email protected]; line: 31, column: 18]

+0

をJSONオブジェクトを作成しますか? – chrylis

+0

私はtoplevelに 'JsonNode'を正しくマップしました。 jsonnodeをjsonnodeに変更すると動作しますか? –

答えて

0

が無視されます。

class ExampleBean{ 
    public String Name; 
    @JsonIgnore 
    public JSONObject data; 
} 

残りのサービスを変更して、着信要求のパラメータとしてデータを受け入れるようにします。

@GET 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response getData(@RequestBody ExampleBean dataBean,RequestParam("data") String data) 
{ 

JSONParser parser = new JSONParser(); 
JSONObject json = (JSONObject) parser.parse(data); 
    // some usage code here 
} 

か、StringJsonObject dataのデータ型を変更し、着信要求からobjectを形成することができます。

class ExampleBean{ 
public String Name; 
public String data; 
} 

以降 `地図<文字列、オブジェクト>`データ列から

 @GET 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response getData(@RequestBody ExampleBean dataBean) 
{ 

JSONParser parser = new JSONParser(); 
JSONObject json = (JSONObject) parser.parse(dataBean.data); 
    // converting the string data to jsonobject 
} 
+0

'@ JsonIgnore'を試しました。うまくいきませんでした。 '@ jsonignore'とは違うのですか? –

+0

申し訳ありませんが、それは入力ミスでした、あなたは2番目の方法を試してみましたか? – Priyamal

関連する問題