【发布时间】:2014-07-08 18:00:13
【问题描述】:
我在这里困了两天,试图读取存储在 JSONArray 中的 JSONobjects 的值。我使用简单的 JSON,它没有多大帮助!我只能通过类似 jsonstring=JSONArrayName.get(indx); 的方式访问保存 JSONObjects 的 JSONArray 元素。但后来我无法从存储在“jsonstring”字符串中的 JSON 对象中读取值请帮助!请在下面找到我的代码。
ps:我正在使用 $.ajax,我需要存储接收到的值并在我的服务器中处理/使用它
//这是我的客户端代码Login.html
//My servlet code to process json received from client
BufferedReader reader = request.getReader();
StringBuilder myinputholder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
myinputholder.append(line);
}
Object obj = JSONValue.parse(myinputholder.toString());
JSONArray newjsonarr = (JSONArray) obj;
// JSONObject newjson= (JSONObject) newjsonarr.get(0); // this line causes errors
PrintWriter pw = response.getWriter();
String f = JSONValue.toJSONString(newjsonarr.get(0));// this will give me a json object
// proper format but I cant do anything with the values inside
JSONValue.writeJSONString(f, pw); // this is only for troubleshooting
【问题讨论】:
-
“这条线导致错误”不是很有帮助。究竟是什么错误? myinputholder.toString() 的值是多少? “list1”来自哪里,它是什么?如果它与问题无关,请将其从代码示例中删除。
-
我删除了list1,我之前尝试将数组插入到列表中,我可以但后来我无法访问该元素,所以谢谢你。错误基本上是每当我保留这条线时,我的应用程序就无法正常工作,所以我试图解决这个问题。问题。他们 myinputholder 保存 BufferReader 返回的字符,然后我将这些字符转换为 StringBuilder 中的字符串
-
使用更简单的库,如 java-json.jar。如果您事先知道 JSON,它具有可以让您更改值的方法。如果您可以发布示例 JSON,我们可能会为您提供更好的帮助。
-
好的,所以您回答了 list1 问题,但跳过了其他问题。您看到的错误究竟是什么。 “不起作用”不是错误。复制并粘贴错误消息或堆栈跟踪。我已经了解 应该 在 myinputholder 中是什么,但我想知道在 myinputholder 中实际上是什么。这应该给我们一个你试图解析的 JSON 的例子。你确定你有价值吗?真的是数组吗?它包含任何元素吗?最后,正如 jsjunkie 所说,使用真正的库,如 jackson 或 gson。
-
digitaljoel- 我收到服务器内部错误。下面是我传递json数组的ajax函数数据,我在浏览器控制台中查找它,它一直在发送数组[{:“用户名”:“d”,“密码”:“8277e0910d750195b448797616e091ad”}]。这是我通过我的 ajax 函数发送的内容 .. var d= []; d.push('{:"username": "' + usertemp + '", "password": "' + $.md5(passtemp) + '"}');
标签: java ajax json servlets json-simple