首页 > 解决方案 > 无法从 Java servlet 中的请求对象中读取 JSON 正文

问题描述

我创建了一个接受 POST 请求的 java servlet。在 POST 请求的正文中有一个 JSON 有效负载。请求看起来像这样 - 在此处输入图像描述

在 servlet 中,我试图获取 JSON 有效负载并打印它 -

StringBuffer jb = new StringBuffer();
            String line = null;
            try {
                BufferedReader reader = slingRequest.getReader();
                while ((line = reader.readLine()) != null)
                    jb.append(line);
            } catch (Exception e) { /*report an error*/ }

            try {
                JSONObject jsonObject =  HTTP.toJSONObject(jb.toString());
                PrintWriter pw = slingResponse.getWriter();
                pw.println(jsonObject);
                pw.close();
            } catch (JSONException e) {
                // crash and burn
                throw new IOException("Error parsing JSON request string");
            }

输出如下 -

{"{        \"metadata\"":"{            \"id\": \"a@A.com\",            \"subscription-pref\": \"Subs\",            \"category\": \"COURSE\",            \"isSubscribed\": true,            \"source\": \"form\"        }    }}","Request-URI":"subscription","Method":"{","HTTP-Version":":"}

请注意,subscription输出中不存在该节点。相反,它显示为 的值Request-URI。为什么我会得到这些附加值,例如Request-URIand HTTP-Version。为什么subscription节点不见了?我只想阅读 JSON 有效负载

标签: javajsonservlets

解决方案


推荐阅读