Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143344
  • 博文数量: 19
  • 博客积分: 230
  • 博客等级: 二等列兵
  • 技术积分: 239
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-01 12:47
文章分类
文章存档

2014年(5)

2013年(4)

2012年(10)

分类: Java

2012-03-20 23:48:10

前一段时间被解析字符串折磨了一阵子,因为json出错,自己的马虎导致没有发现,就是怎么解析都解析不出来,所以今天做一些记录,当时是因为在json的js文件中有一个参数是在引号(")的外边的,我只是关注了下格式,格式没有错误,也有的是多了一对(),虽然格式没错,但是却把我当时要解析的数组变成了对象~~!
首先在解析json文件的时候,应该先看看格式是否正确,是否与自己的要解析的格式相符.FE: 想要的[{name:"abc",pic:"thispic",url:"www.weblog.blog.chinaunix.net"},{name:"def",pic:"thatpic",url:"www.weblog.blog.chinaunix.net"}]而实际的却是是{[...]}这样
其次,是要看看内容里是否合理,有没有造成格式问题.FE:想要的
[{name:"abc",pic:"thispic",url:"www.weblog.blog.chinaunix.net"},{name:"def",pic:"thatpic",url:"www.weblog.blog.chinaunix.net"}]而实际的却是
[{name:"abc",pic:"thispic",url:"www.weblog.blog.chinaunix.net"},{name:"def",pic:"thatpic",url:"www.weblog.blog.chinaunix.net"+fql0915}]
简单的时候可以看到,如果json多的时候就很难阅读,尤其悲剧的是我还是用txt看的希望大家吸取教训啊
尽量用html 或者js 加一些工具 如editplus UE emacs vim等等 这样就容易发现错误
接下来开始说解析文件:commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.3-jdk15.jar 解析这个jar包包含这些依赖 如果嫌它麻烦 也可以用Google的jar包google-gson-2.1-release 我简单的测试过,可以,复杂的有兴趣的可以研究下
下面是部分代码:

点击(此处)折叠或打开

  1. String content = "文件的内容";
  2.         System.out.println(content);
  3.         JSONArray jsonarray = JSONArray.fromObject(content);
  4.         for(int i=0;i<jsonarray.size();i++){
  5.             JSONObject jsonObject = jsonarray.getJSONObject(i);
  6.             MM mm = (MM)jsonObject.toBean(jsonObject,MM.class);
  7.             Set<SM> smset = new HashSet<SM>();
  8.             if(content.indexOf("sM")>0){//查看有没有sM的字符串
  9.                 JSONArray jsonArr = jsonObject.getJSONArray("sM");
  10.                 for(int j =0;j<jsonArr.size();j++){
  11.                     JSONObject jsonObj = jsonArr.getJSONObject(j);
  12.                     SM sm = (SM)jsonObj.toBean(jsonObj, SM.class);
  13.                     smset.add(sm);
  14.                 }
  15.                 mm.setSM(smset);
  16.                 mms.add(mm);
  17.             }
  18.             
  19.             
  20.         }
总之就是利用JSONObject或JSONArray来得到相应json文件中的对象或对象数组,在将得到的数组或对象转化成想要的bean,这个jar包也可以用来将已有的bean转化为json字符串,然后再用jibx dom4j等还可将数据转化为xml.Google的jar包还有个很安全的写法

点击(此处)折叠或打开

  1. Gson gson = new GsonBuilder().create();/* new Gson(); */
  2. Type listType = new TypeToken<List<MM>>() {}.getType();
没有深入研究,个人比较懒~~




阅读(14870) | 评论(2) | 转发(0) |
0

上一篇:读取文件内容

下一篇:Dom4j和Jibx的Xml解析

给主人留下些什么吧!~~

fyyizu2012-03-23 00:18:44

背包包111: json多的时候就很难阅读.....
可不是嘛,当数据量大的时候xml是个不错的选择,下次写个解析xml的

背包包1112012-03-22 22:52:45

json多的时候就很难阅读