来自django的背景,在dw
上不是很强大,请放轻松!
我有一个获取帖子数据的资源,如下所示:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_JSON)
public Response changeStatus(String dataString,
@PathParam("status") Status status) {
HashMap<String, Object> responseMessage = new HashMap<>();
Response.Status respStatus = Response.Status.OK;
// --- ugly stuff to clean things hence the question!!!
// dataString = dataString.replace("dataString=", "").replace("%2C", ",");
// do stuffs
现在,如果我将输入POST
参数传递为abcd,tklmj,1234cd
,则资源将把dataString
作为dataString=abcd%2Ctklmj%2C1234cd
。
dataString
的值在字面上包含dataString
字,并将,
转换为%2C
,我如何反序列化它们以获得原始输入?就像从其值中删除dataString
和%2C
一样。
ajax通话
var target_url = statusURL + status_text;
data = {"dataString": all_data}
$.ajax({
type: "POST",
url: target_url,
data: data,
success: function(data){
console.log(data)
}
});
我使用的是dropwizard版本1.2.2。
答案 0 :(得分:2)
使用HashMap处理正文中的数据:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_JSON)
public Response changeStatus(HashMap data,
@PathParam("status") Status status) {
获取值
String param1 = (String) data.get(<your param name>)
答案 1 :(得分:2)
Resource
正在使用JSON,但您正在发送表单编码的数据。
您可以更改请求以发送有效JSON(在这种情况下Viet's answer应该可以使用),也可以更改Resource
以使用形式编码的数据,然后使用FormParam
进行提取,即:
@POST
@Path("changestatus/{status}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response changeStatus(
@FormParam("dataString") String dataString,
@PathParam("status") Status status) {
...
}