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}]";

其解析方法可以如下:

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 classPerson {

public longid;

publicStringname;

public boolean isMale;

publicStringavatar;

}

通过一个Gson实例:

Gson gson =newGson();

我们可以直接将一个Person实例转换成Json字符串:

Person person =newPerson();

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 =newArrayList<Person>();

Person person =newPerson();

person.id= 111;

person.name="张三";

person.isMale= true;

person.avatar="http://aaaaaaaaa";

list.add(person);


person =newPerson();

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/5

本文来自:http://www.cnblogs.com/mybkn/archive/2012/05/18/2508306.html

更多相关文章

  1. Android中有关数据库SQLite的介绍
  2. Android自定义对话框(Custom Dialog)
  3. Android使用HttpURLConnection和HttpClient请求服务器数据
  4. Android应用程序的数据存放目录 路径
  5. 自定义adapter 及其性能优化
  6. Android中自定义SeekBar来控制音量,并与系统音量键的操作保持同步
  7. 一步一步学习androidNDK编程(java给c传递数据)

随机推荐

  1. Android之自定义View:圆形ImageView实现可
  2. 【android】android Handler应用详解
  3. 查看Android中支持的linux命令
  4. android之定时器AlarmManager .
  5. android项目开发流程
  6. 开发Android主攻四大方向
  7. 史上最好用的Android省市区选择,三级联动
  8. Android(安卓)Support兼容包详解
  9. Android Studio获取SHA1值
  10. android 在myeclipse中查看源码