Android:使用Gon解析解析Json
来源:互联网 发布:不易乎世 编辑:程序博客网 时间:2024/06/11 00:52
android中有提供json的解析,但其JsonReader的SDK是从3.0之后才能使用的
其解析方法可参考http://developer.android.com/reference/android/util/JsonReader.html
对于低版本的我们可以使用一些外加包来方便实现解析
使用Gson包
com.google.gson.stream.JsonReader
下载地址:http://code.google.com/p/google-gson/downloads/list
文档Docs:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html
例如要解析的数据为
String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
解析Json字符串到
其解析方法可以如下:
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(); User user = gson.fromJson(jsonData, User.class); 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(); Gson gson = new Gson(); LinkedList<User> users = gson.fromJson(jsonData, listType); //用迭代器遍历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()); }
and check it :http://stackoverflow.com/questions/2779251/convert-json-to-hashmap-using-gson-in-java
对象–>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);
可参考:http://iandroiddev.com/post/2011-10-08/5647743
- Android:使用Gon解析解析Json
- Android使用gson解析json
- Android 使用个迭代器解析json
- Android-解析Json(1.使用原生态解析,2.使用Gson解析Json,3.FastJson解析)
- 【json】android json解析
- Android数据解析:Json解析
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android 中 使用 Gson解析json
- Android使用JSON进行数据解析
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android下使用Gson解析JSON数据
- Android中使用gson解析JSON
- android使用Gson来解析json
- Android 使用Gson解析json用法
- 关于MKMapView -地图展示
- URAL 1290. Sabotage (sortings)
- grails 通过applicationContext获取bean
- __attribute__((packed))详解
- js模块化开发----sea.js
- Android:使用Gon解析解析Json
- groovy grails 动态方法一例
- 关于coreLocation - 地理位置反向编码
- java学习之旅04--第一个程序HelloWorld
- java学习 synchronized
- Hibernate缓存系列之详细测试
- groovy、java生成随机数32位
- 关于Core Location-ios定位
- 工作流学习——重要概念扫盲篇一步曲