码迷,mamicode.com
首页 > 移动开发 > 详细

android Json解析

时间:2015-07-30 20:48:07      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

Json解析是Android开发必须掌握的技术之一。本文讲的是我对于json解析的理解和使用。

1.简介

把对象转化为Json的时候,我们把其中的name-value按照一定的规则拼接成字符串。把Json字符串转化为对象时,利用反射获得对象当中的各个变量名(也即之前的name),然后再从Json字符串中提取出该变量名对应的值,然后赋值给该变量。也就是说,Json是通过网络传输数据的一种解决方案,toJson和fromJson是编解码方法。

2.使用

原生Android即支持Json的解析。为了说明问题我创建一个简单的Student类:

class Student {
        public String name;
        public int age;
    }

然后我创建了Student的实例student:

Student student = new Student();
student.name = "hsji";
student.age = 25;

我们可以把student实例转化为Json字符串:

 public String studentToJson(Student student){
       StringBuilder sb = new StringBuilder();
       sb.append("{\"name\":\"")
               .append(student.name)
               .append("\",\"age\":")
               .append(student.age)
               .append("}");
       return sb.toString();
   }

针对student实例调用studentToJson方法后得到的Json字符串为{"name":"hsji","age":25}。

也可以上面的Json字符串再转化为对象实例:

public Student jsonTOStudent(String json){
        Student student = new Student();
        try {
            JSONObject jsonObject = new JSONObject(json);
            student.name = jsonObject.getString("name");
            student.age = jsonObject.getInt("age");
            return student;
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }

3.进阶

在实际的工作当中我没有使用上面的方法处理json数据,而是使用了"gson-2.2.4.jar"。这是谷歌提供的专门用来处理Json数据的jar包,网上可以很方便的搜到。

引入这个jar包之后,我们的工作变得轻松起来。下面还是通过具体的使用来说明。

还是使用上面student实例,我们通过jar包提供的方法把它转化为Json字符串:

Gson gson = new Gson();
String json = gson.toJson(student);

把Json字符串转化为对象:

Gson gson = new Gson();
String json = gson.toJson(student);
Student studentCopy = gson.fromJson(json,Student.class);

通过上面示例我们可以发现使用jar包之后,处理Json数据方便了很多。

接下来通过示例说一下如何操作复杂的对象:

首先创建对象类:

    class Student {
        public String name;
        public int age;
    }
    class Teacher {
        public String name;
        public boolean isHeadTeacher;
    }
    class Group{
        public int no;
        public ArrayList<Student> students;
        public Teacher teacher;
    }

我们看到Group这个类里面有一个组标号,一个学生列表,有一个老师。
下面我们创建这个组的实例:

        Group group = new Group();
        group.no = 1;

        Student student1 = new Student();
        student1.name = "李雷";
        student1.age = 13;

        Student student2 = new Student();
        student2.name = "韩梅梅";
        student2.age = 13;

        ArrayList<Student> students = new ArrayList<>();
        students.add(student1);
        students.add(student2);

        group.students = students;

        Teacher teacher = new Teacher();
        teacher.name = "Miss Gao";
        teacher.isHeadTeacher = false;

        group.teacher = teacher;

然后把它转化为Json字符串:

        String groupJson = gson.toJson(group);

再把Json字符串转化为实例对象:

        String groupJson = gson.toJson(group);
        Group groupCopy = gson.fromJson(groupJson,Group.class);

稍后会把对列表的解析加上!

 

android Json解析

标签:

原文地址:http://www.cnblogs.com/hsji/p/4690252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!