Java 无法获取servlet请求中的JSON对象

Java 无法获取servlet请求中的JSON对象,java,json,servlets,Java,Json,Servlets,我已经使用java脚本中获得的数据手动创建了一个JSON对象,并使用Ajax将JSON对象发送到一个servlet 该对象能够接收,但无法再次转换为JSON对象。我使用的是json-simple-1.1.jar 我试过了 JSONObject json=(JSONObject)new JSONParser().parse("json_data"); 但以以下错误结束 Aug 31, 2015 2:28:13 AM source.main.UpdateDetails doGet SEVERE:

我已经使用java脚本中获得的数据手动创建了一个JSON对象,并使用Ajax将JSON对象发送到一个servlet

该对象能够接收,但无法再次转换为JSON对象。我使用的是json-simple-1.1.jar

我试过了

JSONObject json=(JSONObject)new JSONParser().parse("json_data");
但以以下错误结束

Aug 31, 2015 2:28:13 AM source.main.UpdateDetails doGet
SEVERE: null
Unexpected character (j) at position 0.
    at org.json.simple.parser.Yylex.yylex(Yylex.java:610)
    at org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269)
    at org.json.simple.parser.JSONParser.parse(JSONParser.java:118)
    at org.json.simple.parser.JSONParser.parse(JSONParser.java:81)
    at org.json.simple.parser.JSONParser.parse(JSONParser.java:75)
    at source.main.UpdateDetails.processRequest(UpdateDetails.java:55)
    at source.main.UpdateDetails.doGet(UpdateDetails.java:107)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
作为请求发送的JSON文件的输出如下:

{   
    "0":
    {
    "card_name":"Pallela.Manga",
    "aadhar_eid":"1046106160065750110728131521",
    "aadhar_uid":"693228374919",
    "relation":"SELF",
    "age":"43"
    },
    "1":
    {
    "card_name":"KondaBabu",
    "aadhar_eid":"1046106160008020110728125714",
    "aadhar_uid":"996251988555",
    "relation":"HUSBAND",
    "age":"47"
    },
    "2":
    {
    "card_name":"SrinivasaRao",
    "aadhar_eid":"1046106125348220110728131743",
    "aadhar_uid":"609986909901",
    "relation":"SON","age":"25"
    },
    "3":
    {
    "card_name":"Ganesh",
    "aadhar_eid":"1046106160002957110728132026",
    "aadhar_uid":"603873912563",
    "relation":"SON",
    "age":"23"
    }
}

请帮我摆脱困境。。谢谢

您正在将文本
字符串
传递给函数,而不是实际数据:

JSONObject json = (JSONObject) new JSONParser().parse("json_data");
//                                                    ^^^^^^^^^^^
 String json_Data = "{ .....}"; // your json format data
 JSONParser parser = new JSONParser();
 Object obj = parser.parse(json_Data);
 JSONObject jsonObj = (JSONObject)obj;
应该是:

JSONObject json = (JSONObject) new JSONParser().parse(json_data);

假设
json_data
是一个包含
String
json data

的变量,之前我创建了一个json字符串,并使用json.parse(json_String)将其解析为json对象

我已经将其发送到servlet。servlet试图读取它,但当它将对象作为字符串获取时,它将打印为[object object],并试图解析回JSON字符串,给出上述错误

最后,我从stackoverflow得到了另一篇相关文章的帮助

我使用下面的代码制作了一个json字符串并发送到servlet

stringify(JSONobj)

servlet接收到字符串并使用成功创建了JSON对象

JSONObject json=(JSONObject)新建JSONParser().parse(“json_数据”)

对不起,如果我的英语不好。。。多谢各位

 String json_Data = "{ .....}"; // your json format data
 JSONParser parser = new JSONParser();
 Object obj = parser.parse(json_Data);
 JSONObject jsonObj = (JSONObject)obj;
这很好,请测试。

您可以看到,从请求中获取json对象的唯一方法是从缓冲区读取器读取行,然后将行追加到字符串生成器。然后得到完整的json对象请求。然后可以使用getJsonobject或getString解析该json对象。我刚刚实现了相同的功能。您可以在下面查看: 然后使用这些值以json格式发送一些响应

out.println(obj);//obj is my jsonobject for response.


希望它能帮助别人

哦,对不起!实际上,我将requst参数传递给变量json_data,并将字符串传递给json方法。但我还是在犯错误<代码>代码严重:位置1处的空意外字符(o)。org.json.simple.parser.Yylex.Yylex(Yylex.java:610)org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269)org.json.simple.parser.JSONParser.parse(JSONParser.java:118)org.json.simple.parser.JSONParser.parser(JSONParser.java:81)org.JSONParser(JSONParser.java:75)
code
如果在位置0处仍然出现意外字符(j),这意味着问题出现在json_数据字符串中。请不要在没有建议更好答案的情况下否决它,因为它可能误导其他人。