昨天遇到一个很有意思的问题,今天写下来跟大家分享一下,瞬间加深自己的印象,不对的地方希望大家指出。
是这样的。
用java servlet写了一个url连接用于外部调用,在dopost()方法中获取获取传递过来的json格式参数,起初我使用的方法是
String para = request.getParameter("para");
然后通过 System.out.println("------"+para+"-------");打印出来发现也是完成的json数据,但是在进行字符串转json时总是出现异常。
上网找下原因才知道原因:
因为通过servlet 的request.getParameter("para")时对于复杂的json格式会数据丢失。
具体分析可以看一下下面的连接:
http://m.blog.csdn.net/blog/qq183293/45103115
也是按照上面的说法进行操作,然后就通过了,具体做法如下:
BufferedReader reader = request.getReader();
StringBuffer parameter = new StringBuffer();
String line=null;
if( (line=reader.readLine())!= null){
parameter.append(line);
}
这时候如果有存在编码格式问题,需要在对其进行编码格式的转换,
一种方法是 request.setCharacterEncoding(“utf-8”);
另一种是对得到的参数进行decode解码也可以得到想要的数据
String json = URLDecoder.decode(parameter.toString(), "UTF-8");
这样得到的json数据在进行stringtojson 转换就能正常通过了。