Android学习笔记 --------- json数据的解析

习安卓一段时间了。突然觉得前面所学的大多没什么用,现在开始重新整理一遍。现在主要学习和网络相关的安卓知识了。毕竟现在的安卓应用,大多都跟做网络客户端有关的。
这是学习笔记整理的第一篇,记录下Json数据解析,用的gson包。
json就是键值对的集合。
Android一般运用到json解析的地方都是应用通过http向服务器请求信息后,服务器返回json数据,Android将其中的每个json对象解析成相应的Bean对象,如下面的json数据:

[{"name":"zhangsan","age":20},["name":"lisi","age":19]]

此为一个json数组,里面包含两个人的对象。
我们解析便是把两个对象提取出来:

1、在android工程里生成一个Person类,person类的成员有name和age,对于json数据里面的对象。

2、写一个json解析的类,直接返回一个List对象,包含解析好的两个person对象,类的构建如下:

 1

 2

 3

 4

 5

 6

 7

 8

 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40
package com.example.jsontest2;



import java.io.IOException;

import java.io.StringReader;

import java.util.ArrayList;

import java.util.List;



import com.google.gson.stream.JsonReader;



public class JsonUtils {

    private List<Person> persons = null;

    private Person person = null;



    public List<Person> getPersons(String jsonData){

        try {

            JsonReader reader = new JsonReader(new StringReader(jsonData));

            reader.beginArray();

            persons = new ArrayList<Person>();

            while (reader.hasNext()) {

                reader.beginObject();

                person = new Person();

                while(reader.hasNext()){

                String tagName = reader.nextName();

                if (tagName.equals("name")) {

                    person.setName(reader.nextString());

                }else if(tagName.equals("age")){

                    person.setAge(reader.nextInt());

                }

            }

                reader.endObject();

                persons.add(person);

            }

            reader.endArray();      

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return persons;

    }

}

在需要时调用JsonUtils的getPersons方法即可。这当然是比较简单的一种json数据解析。。

你可能感兴趣的:(Android学习)