Android中JSON数据解析
来源:互联网 发布:大数据技术体系 编辑:程序博客网 时间:2024/04/28 18:17
JSON 是JavaScript Object Notation 的缩写,是一种轻量级的数据交换格式。JSON是一系列键值的组合,JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
JSON相对于XML来说,在网路上传输同等价值的数据,体积要更小。这使得JSON在手机网络应用开发上被广泛应用。在这里以Android为例,来初步研究一下JSON的解析。
一、JSON表达式简介
1.JSON基本表达形式
按照最简单的形式,可以用下面这样的 JSON 表示名称 / 值对:
{ "Name": "wangbing" }
JSON支持对象的嵌套,如:
{"Student":
{ "Name": "wangbing" } ,
"Student_id":21332}
2.JSON的数组表示
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。如果使用 JSON,就只需将多个带花括号的记录分组在一起:
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
]}
二、Gson介绍
Gson是google开发的一个Java对象与JSON相互转化的工具包。
使用Gson对象进行JSON数据的相互转化,主要依赖于类Gson的两个函数
toJson() 和fromJson()。
1.对于简单的数据结构可以参考下面的写法.
Gson gson = new Gson(); // Or use new GsonBuilder().create();
MyType target = new MyType();
String json = gson.toJson(target); // serializes target to Json
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2
2.对于数组类的JSON数据可以参考下面写法.
Type listType = new TypeToken<List<String>>() {}.getType();
List<String> target = new LinkedList<String>();
target.add("blah");
Gson gson = new Gson();
String json = gson.toJson(target, listType);
List<String> target2 = gson.fromJson(json, listType);
三、用Gson解析JSON数据包举例。
package com.huchun.appgson;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AppGsonActivity extends Activity {
private String JsonData="[{\"name\":\"tom\",\"age\":30},{\"name\":\"michael\",\"age\":40}]";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button parse = (Button) findViewById(R.id.parsejson);
parse.setOnClickListener(parseListener);
}
private OnClickListener parseListener = new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
new JsonUtil().parseJson(JsonData);
}
};
}
package com.huchun.appgson;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class JsonUtil {
public void parseJson(String json){
Type listType=new TypeToken<LinkedList<Staff>>(){}.getType();
Gson gson=new Gson();
LinkedList<Staff> staffs=gson.fromJson(json, listType);
for(Iterator<Staff> iterator=staffs.iterator();iterator.hasNext(); ){
Staff staff=(Staff)iterator.next();
System.out.println("name -->"+staff.getName());
System.out.println("age -->"+staff.getAge() );
}
}
}
package com.huchun.appgson;
public class Staff {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
- Android中JSON数据解析
- Android中解析Json数据
- Android中解析Json数据
- Android中使用Gson解析JSON数据
- android中json数据的解析
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中解析JSON形式的数据
- android中json数据的解析
- Android中简单json数据解析
- Android中解析JSON形式的数据
- Android中使用Gson解析JSON数据
- Android中解析JSON形式的数据
- Android中解析JSON形式的数据
- Android中解析复杂的JSON数据
- 内存、缓存、虚拟内存的区别
- 2011移动开发者大会--移动互联时代已经来临
- VB连接SQL SERVER 2000
- 标准的产品设计工作流程(转)
- “ERRORCODE=-4228, SQLSTATE=null 非自动批处理出现故障” 的解决办法
- Android中JSON数据解析
- 网络服务开发中,处理不同协议的类库列表
- VC6.0下配置boost库使用正则表达式
- (一)基于PHP——WSDL的创建(NON-WSDL篇)
- 可可私房菜:一个普通中国女孩的移动互联网创业经
- WebService与WCF
- C#使用 StringBuilder 类
- (41)自定义标签库开发(简单标签的使用和带属性的标签)
- javascript 无阻塞脚本