习安卓一段时间了。突然觉得前面所学的大多没什么用,现在开始重新整理一遍。现在主要学习和网络相关的安卓知识了。毕竟现在的安卓应用,大多都跟做网络客户端有关的。
这是学习笔记整理的第一篇,记录下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 910111213141516171819202122232425262728293031323334353637383940



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数据解析。。