POST嵌套Json。但变得空虚

时间:2014-12-07 00:03:21

标签: rest dropwizard postman

我正在尝试发送一个形式为:

的POST请求
{
"startTime":"2014-12-02T00:00:00.000Z",
"endTime":"2014-12-03T00:00:00.000Z",
"numRows":200,
"object":{
         "key":"I am having trouble parsing you",
         "key2":"value2"
         }

}

在后端(使用dropwizard),我的资源类定义为:

    class ResourceExample{

    public Response process(SearchQuery q){

    //doing something
//here q.object = {} instead of {"key": "I am having trouble parsing you", "key2" : "value2"} 
    }

    }

    class SearchQuery{


        @NotNull
        JSONObject object;
        @NotNull
        String startTime;
        @NotNull
        String endTime;
        @NotNull
        int numRows;

    //getters and setters present.

    }

现在,当我发布请求时,“object”的值为{}。 我期待它是{“关键”:“我在解析你时遇到困难”,“key2”:“value2”}

请在这里帮助我。我确信有些东西我不知道了。一些没有点击我的想法。我哪里错了?

1 个答案:

答案 0 :(得分:2)

我会假设你使用的是dropwizard。

首先,在我的环境中,该代码会出现以下错误

{
  message: "Unrecognized field "key" (class org.json.JSONObject), not marked as ignorable"
}

以下代码:

ResourceExample.java

@Path("/sample")
@Produces(MediaType.APPLICATION_JSON)
public class ResourceExample {

    @POST
    public void process(SearchQuery q) {
    ...

SearchQuery.java

public class SearchQuery{
    private JSONObject object;
    private String startTime;
    private String endTime;
    private int numRows;
    //getters and setters present.
    ...

为了工作,我转到下一个代码:

SearchQuery.java

 -  private JSONObject object;
 +  private Map<String, Object> object;

这,将这些键和值中的每一个都放入地图中。

如果您需要{"key": "I am having trouble parsing you", "key2": "value2" },则可以执行下一个代码。

new JSONObject(q.getObject()).toString()