本文目录一览:
android json解析三种方式哪种效率最高
用org.json以及谷歌提供gson来解析json数据的方式更好一些。
安卓下通常采用以下几种方式解析json数据:
1、org.json包(已经集成到android.jar中了)
2、google提供的gson库
3、阿里巴巴的fastjson库
4、json-lib
以Google出品的Gson为例,具体步骤为:
1、首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI:
google-gson-1.7.1-release.zip 把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。 可以使用以下两种方法解析JSON数据,通过获取JsonReader对象解析JSON数据。
代码如下:
String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"username\":\"Jason\",\"userId\":002}]";
try{
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext()){
reader.beginObject();
while(reader.hasNext()){
String tagName = reader.nextName();
if(tagName.equals("username")){
System.out.println(reader.nextString());
}
else if(tagName.equals("userId")){
System.out.println(reader.nextString());
}
}
reader.endObject();
}
reader.endArray();
}
catch(Exception e){
e.printStackTrace();
}
2、使用Gson对象获取User对象数据进行相应的操作:
代码如下:
Type listType = new TypeTokenLinkedListUser(){}.getType();
Gson gson = new Gson();
LinkedListUser users = gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println(user.getUsername());
System.out.println(user.getUserId());
}
3、如果要处理的JSON字符串只包含一个JSON对象,则可以直接使用fromJson获取一个User对象:
代码如下:
String jsonData = "{\"username\":\"arthinking\",\"userId\":001}";
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println(user.getUsername());
System.out.println(user.getUserId());
Android开发中应该使用哪一种主流json框架
Android开发中应该使用的主流json框架有三种,分别是gson、fastjson、jackson这三种。
各自的区别:
gson:谷歌开发的gson很受国内外人士常使用,不过使用率低于fastjson,耗费内存多。
fastjson:框架的fastjson是最小的,属于老牌并且国内开发者经常使用,fastjson必须有默认的构造函数。
jackson:jackson属于小众开发者使用的,jackson的框架包是最大的。
Android 中解析 JSON
JSON( JavaScript Object Notation ) 是一种轻量级的数据交换格式。易于阅读和编写,同时也易于机器解析和生成。
JSON 建构于两种结构:
JSON 具有以下这些格式:
参考: Android 中 解析 JSON
Android 提供类四种不同的类来操作 JSON 数据。这些类是 JSONArray、JSONObject、JSONStringer 和 JSONTokenizer
为了解析 JSON 对象,须先创建一个 JSONObject 类的对象,需要传入需解析的字符串 JSONObject root = new JSONObject(candyJson); 然后根据 JSONObject 对象提供方法以及数据类型解析对应 json 数据。下表展示一些 JSONObiect 提供的方法
示例:
请教高手android中使用JSON的问题
使用json-lib来进行解析,需要引入第三方的包。
尽量不要直接通信JSON,收发字符串之后各自解析。另外客户端服务端的字符编码要统一,一般UTF8。