http request 获取复杂json数据时出现异常解决额

昨天遇到一个很有意思的问题,今天写下来跟大家分享一下,瞬间加深自己的印象,不对的地方希望大家指出。


是这样的。

用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 转换就能正常通过了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值