android解析json串
来源:互联网 发布:偶得作诗软件 编辑:程序博客网 时间:2024/06/03 16:39
第一种方式(普通解析)
例如要解析的数据为
String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
其解析方法可以如下:
try{
//如果需要解析JSON数据,首要要生成一个JsonReader对象
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext()){
reader.beginObject();
while(reader.hasNext()){
String tagName = reader.nextName();
if(tagName.equals("name")){
System.out.println("name--->" + reader.nextString());
}
else if(tagName.equals("age")){
System.out.println("age--->" + reader.nextInt());
}
}
reader.endObject();
}
reader.endArray();
}
catch(Exception e){
e.printStackTrace();
}
第二种方式 解析一个json对象到一个自定义对象
例如:要解析String jsonData = "{\"name\":\"Michael\",\"age\":20}";
可以定义model类user
public class User {
private String name ;
private int age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
解析过程
Gson gson = new Gson(); //创建一个代表JSON对象的Bean
User user = gson.fromJson(jsonData, User.class); //jsonData是一个Json对象
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
补充:若要解析的json数据如下:
{
AList: [
{
a1:1,
a2:2,
a3:3
},
{
a1:11,
a2:22,
a3:33
}
],
BList: [
{
b1:1,
b2:2,
b3:3
},
{
b1:11,
b2:22,
b3:33
}
],
C: 0
}
可自定义对象如下:
public class Model {
private List<A> AList;
private List<B> BList;
private int C;
public class A {
private int a1;
private int a2;
private int a3;
.........
}
public class B {
private int b1;
private int b2;
private int b3;
.........
}
........
}
//省略了get set
第三种方式 解析一组json对象到自定义对象
例如要解析的数据为:
String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
解析到user,其定义如上,
解析过程为
public void parseUserFromJson(String jsonData){
Type listType = new TypeToken<LinkedList<User>>(){}.getType();//TypeToken是一个空的抽象类
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);//User对象会被保存到LinkedList中
//用迭代器遍历users
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println("name--->" + user.getName());
System.out.println("age---->" + user.getAge());
}
对象-->JSON
假如我们有一个类Person:
public class Person {
public long id;
public String name;
public boolean isMale;
public String avatar;
}
通过一个Gson实例:
Gson gson = new Gson();
我们可以直接将一个Person实例转换成Json字符串:
Person person = new Person();
person.id= 111;
person.name= "张三";
person.isMale= true;
person.avatar= "http://aaaaaaaaa";
String jsonStr = gson.toJson(person);
Log.v("=============", jsonStr);
即使是List和Map也可以(以List为例):
ArrayList<Person> list = new ArrayList<Person>();
Person person = new Person();
person.id= 111;
person.name= "张三";
person.isMale= true;
person.avatar= "http://aaaaaaaaa";
list.add(person);
person = new Person();person.id= 222;
person.name= "李四";
person.isMale= false;
person.avatar= "http://bbbbbbbbb";
list.add(person);
String jsonStr = gson.toJson(list);
Log.v("=============", list);
- Android 解析 Json串
- android解析json串
- 【json】android json解析
- JSONObject解析Json串(Android)
- Android-Android解析JSON
- Android数据解析:Json解析
- android---Json数据解析
- Android Json 数据解析
- android 解析JSON
- android 解析json数据格式
- android 解析json数据格式
- Android 解析json数据格式
- android 解析json数据格式
- android 解析json数据格式
- Android的JSON解析
- Android 解析Json
- android JSON 解析
- Android 解析json数据格式
- A. TL
- 什么是DAG
- 黑马程序员_<<IO扩展对象和编码(序列化,管道流,字节(符)数组),随机访问文件>>
- Zoj 3662 DP
- ZOJ 1137二分图匹配最大独立集
- android解析json串
- MySQL中日期与时间类型
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- HDU1289 Tarjan-模板题
- CString, QString, char*之间的转换
- 僵尸进程
- Ubuntu 12.04下Gedit打开txt文件乱码解决办法
- 开始topcoder
- Linux下多任务间通信和同步-System V信号量