我使用java脚本中获取的数据手动创建了一个JSON对象,并使用Ajax将JSON对象发送到servlet。
Object能够接收但无法再次转换为JSON Object。我正在使用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"
}
}
请帮我解决这个问题..谢谢
答案 0 :(得分:1)
您正在将文字String
传递给该函数,而不是实际数据:
JSONObject json = (JSONObject) new JSONParser().parse("json_data");
// ^^^^^^^^^^^
它应该是:
JSONObject json = (JSONObject) new JSONParser().parse(json_data);
假设json_data
是包含String
json数据的变量
答案 1 :(得分:0)
之前我创建了一个JSON String,并使用JSON.parse(json_string)将其解析为JSON Object;
我已将其发送给servlet。 servlet尝试读取它但是因为它将对象作为字符串打印为[对象对象]并且在尝试解析回JSON字符串时给出上述错误
最后我从另一篇帖子中获得了stackoverflow的帮助 How to read json sent by ajax in servlet
我使用下面的json创建了一个字符串并发送到servlet。
JSON.stringify(JSONobj)
servlet收到字符串并使用
成功创建了JSON对象JSONObject json =(JSONObject)new JSONParser()。parse(“json_data”);
抱歉,如果我的英语不好......谢谢答案 2 :(得分:0)
String json_Data = "{ .....}"; // your json format data
JSONParser parser = new JSONParser();
Object obj = parser.parse(json_Data);
JSONObject jsonObj = (JSONObject)obj;
这样可以正常测试。
答案 3 :(得分:0)
response.setContentType("application/json");
//Gson gson = new Gson();
StringBuilder sb = new StringBuilder();
String s;
while ((s = request.getReader().readLine()) != null) {
sb.append(s);
}
System.out.println(sb.toString());//got the full request as string.
JSONObject requestObj = new JSONObject(sb.toString());
JSONObject reqjson=requestObj.getJSONObject("Request");
JSONObject auJsonObject=reqjson.getJSONObject("Verification");
JSONObject getopobj=reqjson.getJSONObject("GetAllOperators");
String userid=auJsonObject.getString("username");
String pass=auJsonObject.getString("password");
String service_type=getopobj.getString("type");
然后使用这些值我以json格式发送一些响应。
out.println(obj);//obj is my jsonobject for response.
希望它能帮助别人。!