Java 无法获取servlet请求中的JSON对象
我已经使用java脚本中获得的数据手动创建了一个JSON对象,并使用Ajax将JSON对象发送到一个servlet 该对象能够接收,但无法再次转换为JSON对象。我使用的是json-simple-1.1.jar 我试过了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:
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_数据字符串中。请不要在没有建议更好答案的情况下否决它,因为它可能误导其他人。