代码之家  ›  专栏  ›  技术社区  ›  NoobEditor

反序列化资源中的POST参数

  •  0
  • NoobEditor  · 技术社区  · 7 年前

    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 .

    数据串 数据串 里面的字,还有 , %2C ,如何反序列化它们以获取原始输入?如在remove中 数据串 %2厘米 从它的价值。

    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)
                    }
                });
    

    2 回复  |  直到 6 年前
        1
  •  2
  •   NoobEditor    7 年前

    使用HashMap处理来自body的数据:

    @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>)
    
        2
  •  2
  •   Jonathan    7 年前

    Resource 需要JSON,但您正在发送表单编码数据。

    您可以更改请求以发送有效的JSON Viet's answer 应该工作,或者改变 资源 使用表单编码数据,然后使用 FormParam

    @POST
    @Path("changestatus/{status}")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
    public Response changeStatus(
        @FormParam("dataString") String dataString, 
        @PathParam("status") Status status) { 
        ...
    }