我已经解决了,最终发现的问题是在url拼接的时候json部分最开始的那个字符是"{",而不是正常json的"[",最后一个字符情况也一样。参数如下: :8080/ROOT/test?test={"Date":"ds","Lon":"0.0","Lat":"1.0","Voice":[{"filename":"IMG_20140713_101209.jpg"}],"Picture":[{"filename":"IMG_20140713_101209.jpg"}],"Video":[{"filename":"IMG_20140713_101209.jpg"}]}
里面还有几个带[]的值,但是没有影响到生成最外层的jsonobject,我想是因为json嵌套的原因。
还有在服务端接收到json的字符之后,还需要对转义字符做处理,用java替换字符的函数(replaceAll)将双引号替换为反斜杠加双引号。
代码这样写的:
String temp = request.getParameter("jsonString");
temp = temp.replaceAll("\"","\\"");
我这样做确实将jsonString转换成了JSONObject。
我现在知识储备和开发经验还不多,上面的回答是根据我现有的理解,如果回答有什么问题,欢迎诸位前辈批评指正~