2

我正在尝试发送一个 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”的值为 {}。我希望它是 {"key": "I am hard to parsing you", "key2": "value2" }

请在这里帮助我。我确信我缺少一些东西。一些在我脑海中没有点击的东西。我哪里错了?

4

1 回答 1

2

我将假设您使用的是 dropwizard 来回答。

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

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

代码如下:

资源示例.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()
于 2014-12-11T18:07:47.827 回答