新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Android Json解析 - 初步

        Android Json解析 - 初步

        作者: 時間:2016-09-12 來源:網絡 收藏

        JSON與XML一樣都是數據格式,JSON的數據格式比XML更小。這里主講JSON。

        本文引用地址:http://www.104case.com/article/201609/305004.htm

        JSON是JavsScript對象符號。

        下面是一個簡單的JSON格式

        {name:zhangsan,age:22,address:太原}

        這就是一個對象,里面的值key是冒號前面的類容,value是冒號后面的類容。

        JSON還可以有數組的形式,如下:

        [{name:zhangsan,age:22,address:太原},

        {name:lisi,age:20,address:黃岡},

        {name:wangwu,age:21,address:武漢}]

        在中括號里全都是對象,這種對象的個數沒限制,對象里是鍵值對。

        在JSON對象中還可以有對象,如下:

        {

        name:zhangsan,age:22,

        address:{country:中國,province:山西,city:太原}

        }

        這就是說address key是一個對象。

        這就是JSON的基本形式。

        首先下載解析JSON需要的Jar包 下載。這是Google提供解析JSON的開源的Json Jar包。

        1.最基礎的解析

        這種解析式最普遍的,根據JSON的格式來解析,我來解析如下的JSON數據:

        {name:zhangsan,age:22,address:太原}

        首先

        String s={name:zhangsan,age:22,address:太原};

        這里使用反斜杠來使用雙引號。

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

        聲明一個JsonReader對象,將String s傳入。

        try {

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

        reader.beginObject();

        while(reader.hasNext())

        {

        String key=reader.nextName();

        if(name.equals(key))

        {

        System.out.println(reader.nextString());

        }

        if(age.equals(key))

        {

        System.out.println(reader.nextInt());

        }

        if(address.equals(key))

        {

        System.out.println(reader.nextString());

        }

        }

        reader.endObject();

        } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

        }

        結果如下:

        開始解析的時候調用reader.beginObject();結束的時候調用reader.endObject().應為一個對象里可能有很多的鍵值對,所以要使用while循環,當對象里的鍵值對都循環完了的話reader.hasNext()方法返回false。reader.nextXXX()獲得你所要的值,XXX為類型。

        2.解析數組

        下面解析如下的Json數據:

        [{name:zhangsan,age:22,address:太原},

        {name:lisi,age:20,address:黃岡},

        {name:wangwu,age:21,address:武漢}]

        如下代碼:

        try {

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

        reader.beginArray();

        while(reader.hasNext())

        {

        reader.beginObject();

        while(reader.hasNext())

        {

        String key=reader.nextName();

        if(name.equals(key))

        {

        System.out.println(reader.nextString());

        }

        if(age.equals(key))

        {

        System.out.println(reader.nextInt());

        }

        if(address.equals(key))

        {

        System.out.println(reader.nextString());

        }

        }

        reader.endObject();

        }

        reader.endArray();

        } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

        }

        根據這個Json的數據結構,我先解析數組,所以開始就reader.beginArray();當然還要reader.endArray();同樣使用reader.hasNext()來判斷數組是否都解析完了。

        下面是效果圖:

        3.包含對象的對象解析

        下面我解析如下的Json數據:

        {

        name:zhangsan,age:22,

        address:{country:中國,province:山西,city:太原}

        }

        廢話不多說先來代碼:

        try {

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

        reader.beginObject();

        while(reader.hasNext())

        {

        String key=reader.nextName();

        if(name.equals(key))

        {

        System.out.println(reader.nextString());

        }

        if(address.equals(key))

        {

        reader.beginObject();

        while(reader.hasNext())

        {

        String theKey=reader.nextName();


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 汶川县| 桂林市| 延长县| 浪卡子县| 雅江县| 柳河县| 江北区| 视频| 宜昌市| 桐梓县| 会东县| 大同县| 永嘉县| 贵溪市| 凤阳县| 昆山市| 松滋市| 木兰县| 高雄县| 哈尔滨市| 佳木斯市| 玉屏| 定日县| 永修县| 黔东| 禹城市| 乌兰县| 双流县| 固镇县| 陇川县| 遂川县| 民勤县| 利川市| 翁牛特旗| 青浦区| 萍乡市| 新邵县| 临桂县| 修文县| 绿春县| 吉隆县|