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

新注册了这个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文件解析的问题,而且,并不复杂!

时间: 2024-10-12 09:50:17

Android: JSON数据解析--JSONlib与org.JSON的冲突的相关文章

Android JSON数据解析(GSON方式)

要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Java对象,或是将一个Java对象转换为相应的JSON数据. 1.GSON的两个重要方法 在GSON的API中,提供了两个重要的方法:toJson()和fromJson()方法.其中,toJson()方法用来实现将Java对象转换为相应的JSON数据,fromJson()方法则用来实现将JSON数据转换

android开发之JSON数据解析

android开发之JSON数据解析 本博文主要讲述的是使用google的lib库gson解析JSON数据的方法,因为android自带的JSON数据解析器对只可以在android 3.0以上版本才能适用,如果需要使用gson,我们需要在项目中添加gson的lib库文件,然后add path.详细代码如下: MainActivyty.java: package com.example.analysisjson; import android.os.Bundle; import android.a

json数据解析,并实现将网络json数据获取用listview显示

需要使用jar包 fastjson或gson这两个jar包. //Gson的使用方式 Gson gson=new Gson(); String str=ReadAssetsFile.readtext(this,"json_ss");//this当前类,"json_ss"需要解析的文件名 UserMessage userMessage=gson.fromJson(str,UserMessage.class);//需要解析的json文件最外层类名 //fastjson的

最简单简洁高效的Json数据解析

一.无图无真相 二.主要代码 1.导入jar包 拷贝fastjson.jar包到projectlibs包下 2.封装工具类JsonUtil.java package com.example.parsejsondemo; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; /**

JSON数据解析(GSON方式) (转)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 在上一篇博文<Android学习笔记44:JSON数据解析>中,我们使用基本的JSON API完成了在服务器端创建JSON数据,以及在Android客户端对JSON数据进行解析. 其实,要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使

JSON数据解析(转)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android开发中,如何在服务器端创建JSON数据,以及如何在Android客户端对JSON数据进行解析. 1.JSON数据结构 在JSON中有两种数据结构:对象和数组. 1.1对象 在JSON中,一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号),冒号后是该名称的值,多个

iOS之网络数据下载和Json数据解析

iOS之网络数据下载和Json数据解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据,以及如何显示数据和图片的异步下载显示 涉及到的知识点: 1.NSURLConnection异步下载封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 (1)什么是网络应用? 一般情况下, iPhone的计算机, 照相机不需要从网络上下载数据也能运行, 所以这

ios json数据解析

刚刚下午那会 弄了个 解析 xml  demo的小例子,本想着json也挺复杂 弄还是 不弄,但是简单的看了下 发现挺简单,这个时候就犹豫了,要不写到博客上来 ? 考虑了很久,还是写上来吧,毕竟json用得太多了,而且算是自己的积累吧,毕竟刚开始学习IOS开发方面的知识,就当是巩固了撒! 还是 先看个效果图吧,如下! 接下来 看下工程目录吧,其实并没有必要,直接建立一个工程就行 ,算了,还是贴上来吧,如下: 工程目录中有个 Notes.json 文件,该文件就是 要解析的json数据了 ,也截下

【Qt编程】基于Qt的词典开发系列&amp;lt;九&amp;gt;--JSON数据解析

在上一篇文章<用户登录及API调用的实现>中,我通过程序实现了用户登录及API调用的实现.从而能够实现网络查词.添词的操作.可是.从上文中能够看到.调用API后返回的是JSON格式的数据,例如以下图所看到的(在QtCreator中的显示): 为了更好的观察JSON格式.我整理后显演示样例如以下: 显然.为了显示查词的结果,我们必须在上图中提取实用的信息,并正确的显示出来. 上图中每一行内容的意思我已经在文章<调用网络API>中作了解释.我在词典中选择想要显示的内容有:单词本身.单词