Android 中解析 JSON

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

什么是JSON?

1.JSON:Javascript Object Nation

2.JSON是一系列鍵值對的集合

3.JSON以經被大多數開發人員接受,在網絡數據傳輸中應用相當廣泛

4.JSON相對XML來說解析相對方便一些

 

JSON vs XML

1.JSON 和 XML 可讀性基本相同

2.JSON 和 XML 同樣有豐富的解析手段

3.JSON相對XML來說體積數據小

4.JSON和Javascript的交互更加方便

5.JSON對數據的描述性相對較差

 

有什么不懂的可以去官網去看看:www.json.org


在google android中也有關于解析JSON的類庫:JsonReader,但是只能在3.0以后的版本中才可以用,在這里我們用google提供的類庫google-gson,可以從code.google.com/p/google-gson/下載jar包。


下面通過一個小例子來學習一下:


例子:

[{"name":"zhangsan","age":22},{"name":"lisi","age":23}]

分析:

1.開始解析數組

2.開始解析對象

3.解析鍵值對

4.解析鍵值對

5.解析對象結束

6.開始解析對象

7.解析鍵值對

8.解析鍵值對

9.解析對象結束

10.解析數組結束



下面的是一個Activity,很簡單只有一個button,并為button添加單擊事件,

package com.tony.json;

import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button;

public class JsonActivity extends Activity { /* Called when the activity is first created. /

private String jsonData = "[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]";
private Button jsonButton;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    jsonButton = (Button) findViewById(R.id.json_button);
    jsonButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            JsonUtils jsonUtils = new JsonUtils();
            jsonUtils.parseJson(jsonData);
        }
    });
}

}</pre>

這個類中主要是解析json數組:

package com.tony.json;

import java.io.IOException; import java.io.StringReader;

import android.util.Log;

import com.google.gson.stream.JsonReader;

public class JsonUtils { private static final String TAG = "JsonUtils";

public void parseJson(String jsonData){
    JsonReader reader = new JsonReader(new StringReader(jsonData));
    try {
        reader.beginArray();    // 開始解析數組
        while (reader.hasNext()) {
            reader.beginObject();   // 開始解析對象
            while (reader.hasNext()) {
                String tagName = reader.nextName(); // 得到鍵值對中的key
                if (tagName.equals("name")) { // key為name時
                    Log.i(TAG, "name--------->" + reader.nextString());    // 得到key中的內容
                }else if (tagName.equals("age")) {    // key為age時
                    Log.i(TAG, "age--------->" + reader.nextInt());    // 得到key中的內容
                }
            }
            reader.endObject();
        }
        reader.endArray();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}</pre>

下面是運行后在logcat中打印出的結果:Android 中解析 JSON

轉自: http://tonysun3544.iteye.com/blog/1330027

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