2017-01-28 2 views
1

私は、このカスタムオブジェクトExampleを持っていますが、これはorg.json.JSONObjectをmongoクエリとして持っています。Spring @RequestBodyがカスタムオブジェクトにマッピングしていません

public class ExampleObject { 

private JSONObject query; 
private String[] projections; 
private Number limit; 

// Constructors, getters and setters 

} 

私はこのようなRESTコントローラを使用しています:

POST http://localhost:8080/example/search

へ:その後、

@RestController 
@RequestMapping("/example") 
public class ExampleRestController { 

@RequestMapping(value = "/search", method = RequestMethod.POST) 
@ResponseBody 
public String example(@RequestBody ExampleObject example) { 

    return "This is an example"; 
} 

そして、私は郵便配達して、次の要求を行います本文を以下に示します(私はでJSONの有効性をチェックしました):

{ 
"query":{ 
    "field1":"value1", 
    "field2":"value2" 
    }, 
"projections":["field3, field4"], 
"limit":3 
} 

結果は:オブジェクト上の突起と限界「の例は、」正しくsettedているが、クエリが空JSONObject)(nullでありません。フィールドクエリを送信しない場合、オブジェクト "example"のJSONObject変数はnullです。

フィールドクエリが正しく設定されていない理由を理解できません。 @RequestBody jsonをExampleObjectにマップする必要があります。

+1

私はジャクソンが 'JSONObject'をどのように非直列化するのか知らないと疑っています。 'com.fasterxml.jackson.core.JsonNode'で試してみることができますか? –

+0

JsonNodeではうまく動作します!ありがとう!! –

答えて

1

スプリング(特にジャクソン)は、デシリアライズ方法を知らないJSONObject。代わりにcom.fasterxml.jackson.core.JsonNodeを使用できます。

関連する問題