我正在尝试发送一个形式为:
的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”}
请在这里帮助我。我确信有些东西我不知道了。一些没有点击我的想法。我哪里错了?
答案 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()