Android之json數據解析

openkk 12年前發布 | 93K 次閱讀 Android Android開發 移動開發

首先是介紹:

一、什么是json數據

1、json:javascript object Notation的簡稱
2、json數據是一系列鍵值對的集合;
3、json已經被大多數開發人員,在網絡數據的傳輸當中應用非常廣泛;
4、json相對于xml來講解析稍微方便一些

5、它的基本數據格式是:

{
"name":"Michael",
"andress":
{
"city":"Beijing",
"Street":"Chaoyang Road",
"prostcode":100024
}
}

二、json數據跟xml的比較

1、json和xml的數據可讀性基本相同;
2、json和xml同樣擁有豐富的解析手段;
3、json相對于xml來講,數據體積小;
4、json與javascrpit的交互更加方便;
5、json對數據的描述性相對較差;

三、android中的3種解析方式的代碼如下:

首先要把jar包拷到項目中:

Android之json數據解析  Android之json數據解析   http://code.google.com/p/google-gson/ 

第一種方式解析:private String jsonData1="[{\"name\":\"renhaili\",\"age\":20},{\"name\":\"zhouxiaodong\",\"age\":21}]";這種數據的解析方式:

public void parseJson(String jsonData) {
        // 如果需要從解析json數據,首先要生成一個jsonReader對象
        JsonReader reader = new JsonReader(new StringReader(jsonData));
        try {
            // 現在開始解析
            reader.beginArray();// 開始解析數組
            while (reader.hasNext()) {
                reader.beginObject();// 開始解析對象
                while (reader.hasNext()) {
                    String tagName = reader.nextName();
                    if (tagName.equals("name")) {
                        System.out.println(reader.nextString());
                    } else if (tagName.equals("age")) {
                        System.out.println(reader.nextInt());
                    }
                }
                reader.endObject();// 結束對象解析
            }
            reader.endArray();// 結束數組解析
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
第二種方式解析:private String jsonData2="{\"name\":\"xiong\",\"age\":18}";這種數據的解析方式:

單個json對象轉化為與之對應的user對象

這種只能解析對象,不可以解析數組的

首先要創建一個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;
    }
}
然后利用User類解析json數據:

Gson 是 Google 提供的用來在 Java 對象和 JSON 數據之間進行映射的 Java 類庫。可以將一個 JSON 字符串轉成一個 Java 對象,或者反過來。

Gson網址http://code.google.com/p/google-gson/

public void pareUserFromJson(String jsonData){
        Gson gson=new Gson();//創建Gson對象,
        User user=gson.fromJson(jsonData,User.class);
        System.out.println(user.getName());
        System.out.println(user.getAge());
    }
第三種解析:還是第一種的數據類型用第二種方式解析:

json對象數組轉化為與之對應的user對象

如果想要JSON數組轉換成多個的User對象,可以使用TypeToken:

Type 是 Java 編程語言中所有類型的公共高級接口。它們包括原始類型、參數化類型、數組類型、類型變量和基本類型。

public void parseJsonFromUser(String jsonData){
        //likedlist是雙向列表
        Type listType=new TypeToken<LinkedList<User>>(){}.getType();
        Gson gson=new Gson();
        LinkedList<User> users=gson.fromJson(jsonData, listType);
        for(Iterator<User> iterator=users.iterator();iterator.hasNext();){
            User user=(User)iterator.next();
            System.out.println(user.getName());
            System.out.println(user.getAge());
        }
    }

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!