码迷,mamicode.com
首页 > 移动开发 > 详细

Android: JSON数据解析--JSONlib与org.JSON的冲突

时间:2014-11-26 15:43:36      阅读:610      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   io   ar   color   os   使用   

新注册了这个blog,正好这两天学写Android,需要解析本地的JSON文件,google一搜看到JSONlib这玩意儿挺靠谱,就大刀阔斧下了相关依赖包干了起来,没想到这下掉进了一个深坑,网上也查不到原因,在血海里翻腾了两天,如今好不容易爬了出来,与君分享,也作为开篇之作,不足之处还望指正。

 

对于初次解析JSON文件的童鞋可能会上网查找解析JSON文件的方法,于是网上有诸如JSONLIB, FASTJSON, GSON等方式,于是看的眼花撩乱。

 

其实。。我想说,Android自带的org.json包完全可以完成这个任务。。没必要去下载那些外部包

 

更坑的是,JSONLIB和Android自带的org.json包是冲突的。。which means, 你如果在java的开发环境下使用JSONLIB,完全没问题,不过你如果用Android的开发环境,不好意思,会报错

 

Error Message: AndroidRuntime java.lang.NoClassDefFoundError: Failed resolution of :Lnet/......JSONArray

这个原因完全是因为JSONLIB和org.JSON在包的命名上存在冲突 (当时我查的昏天黑地,反复纠结,在Java项目下用的好好地JSONLIB,为什么一放到Android就不行了呢,真是个大坑)

 

其实,JSONLIB与org.JSON的语法类似,

除了在新建对象时有所不同

JSONArray ja = new JSONArray(res);       org.JSON

 

JSONArray ja = new JSONArray();            JSONLIB

ja.from(res)               

在实际使用时两者几乎没有区别 e.g.

ja.getJb().getJSONArray("comments").getJSONObject(j).getString("time_created").toString()

 

 1 import java.io.InputStream;
 2 
 3 import org.apache.http.util.EncodingUtils;
 4 import org.json.JSONArray;
 5 import android.content.Context;
 6 import com.example.test.R;
 7 
 8 public class InitJson{
 9     public  String sJsonResource;
10     public  JSONArray ja;
11     public  void init(Context context) {
12         try {
13             //读取JSON文件
14             InputStream in = context.getResources().openRawResource(
15                     R.raw.community);
16             int length = in.available();
17             byte[] buffer = new byte[length];
18             in.read(buffer);
19             sJsonResource = EncodingUtils.getString(buffer, "BIG5");
20             in.close();
21             ja = new JSONArray(sJsonResource);
22             in.close();
23             for (int i = 0; i < ja.length(); ++i) {
24                 ja.getJSONObject(i).getString("time_created").toString();
25             }
26         } catch (Exception e) {
27             e.printStackTrace();
28         }
29 
30     }
31 }

 

 

Last but no least

 

压根没必要去用外部库,Android自带的org.json就能解决你的一切关于JSON文件解析的问题,而且,并不复杂!

Android: JSON数据解析--JSONlib与org.JSON的冲突

标签:android   style   blog   http   io   ar   color   os   使用   

原文地址:http://www.cnblogs.com/Raymond-Yang/p/4122966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!