加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Expected BEGIN_ARRAY but was STRING 解决方案

(2014-04-10 17:15:21)
标签:

java

android

json

gson

分类: IT
Expected BEGIN_ARRAY but was STRING at line 1 column 2
解决方法:
revJson=revJson.replace("\\", "");//去掉'/'
revJson=revJson.substring(1, revJson.length()-1); //去掉头尾引号。
简单对象解析:
objmodel obj=gson.fromJson(objjson, objmodel.class);
List解析
 List retList = gson.fromJson(rev,  
               new TypeToken>() {  
               }.getType());  


分析过程:
今天在使用gson解析从wcf服务端获取的json数据时遇到了这样的错误,换成fastjson错误依旧。
现在只能逐步排查。
数据库获取的数据串:
"[{\"tsid\":18,\"itemid\":3,\"taskcity\":\"济南\",\"execdate\":\"2014-04-10 00:00:00\",\"exectime\":\"9-16\",\"tasknum\":12,\"taskfinishnum\":0,\"status\":\"1\",\"statusdate\":\"2014-04-04 12:25:25\",\"lastnum\":12,\"onetaskreward\":0,\"tasktel\":\"053155584120\"}]"

1.获取到服务端的json数据是否和实体类匹配。检查通过。
2.检查json数据是否是规范的json格式。多了'\'。
去除'\'方法:revJson=revJson.replace("\\", "");
可问题依旧。
3.把json数据保存成常量数据。
String strjson="[{\"tsid\":18,\"itemid......}]";
 解析方法:List retList = gson.fromJson(rev,  
               new TypeToken>() {  
               }.getType());  
       for (objmodel  objl: retList) {  
           System.out.println(objl);  
       }  
成功!
4.换回服务器获取的数据还是失败,仔细对比服务器数据格式发现头尾都有引号括着,或许是解析到引号不能正确识别为json所致。
去除引号revJson=revJson.substring(1, revJson.length()-1);
测试成功!




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有