Android中JSON資料格式的簡單使用

qingyezhu發表於2014-11-15

原始碼:

package com.wangzhu.demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;

/**
 * JSON:JavaScript物件表示法(JavaScript Object Notation)。 <br/>
 * JSON是儲存和交換文字資訊的語法。<br/>
 * 
 * 特點:<br/>
 * JSON是輕量級的文字資料交換格式<br/>
 * JSON獨立於語言和平臺<br/>
 * JSON具有自我描述性,更以理解<br/>
 * 
 * 與XML的區別:<br/>
 * 類似XML,比XML更小、更快、更易解析<br/>
 * 沒有結束標籤<br/>
 * 更短<br/>
 * 讀寫的速度更快<br/>
 * 使用陣列<br/>
 * 不使用保留字<br/>
 * 
 * JSON語法是JavaScript物件表示法語法的子集。<br/>
 * 資料在名稱/值對中<br/>
 * 資料由逗號分隔<br/>
 * 花括號儲存物件<br/>
 * 方括號儲存陣列<br/>
 * 
 * JSON值可以是:<br/>
 * 數字(正數或浮點數)<br/>
 * 字串(在雙引號中)<br/>
 * 邏輯值(true或false)<br/>
 * 陣列(在方括號中)<br/>
 * 物件(在花括號中)<br/>
 * null<br/>
 * 
 * @author wangzhu
 * @date 2014年11月15日 下午11:37:38
 */
public class JSONUtils {

    private Context context;

    public JSONUtils(Context context) {
        this.context = context;
    }

    /**
     * 讀取Json物件
     */
    public void readJsonObject() {
        String json = readFile();
        try {
            JSONObject root = new JSONObject(json);
            System.err.println("cat=" + root.getString("cat"));
            JSONArray array = root.getJSONArray("language");
            for (int i = 0; i < array.length(); i++) {
                System.err.println("------------");
                JSONObject object = array.getJSONObject(i);
                System.err.println("id=" + object.getInt("id"));
                System.err.println("ide=" + object.getString("ide"));
                System.err.println("name=" + object.getString("name"));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    /**
     * 讀取檔案中的內容,文字編碼方式為UTF-8
     * 
     * @return
     */
    private String readFile() {
        StringBuilder accum = new StringBuilder();
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
            isr = new InputStreamReader(context.getAssets().open(
                    "testJson.json"), "UTF-8");
            br = new BufferedReader(isr);
            String line = null;
            while ((line = br.readLine()) != null) {
                accum.append(line);
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return accum.toString();
    }

    /**
     * 建立Json物件
     */
    public void createJsonObject() {
        try {
            JSONObject root = new JSONObject();
            root.put("cat", "it");
            JSONArray array = new JSONArray();

            JSONObject lan1 = new JSONObject();
            lan1.put("id", 1);
            lan1.put("ide", "Eclipse");
            lan1.put("name", "Java");
            array.put(lan1);

            JSONObject lan2 = new JSONObject();
            lan2.put("id", 2);
            lan2.put("ide", "Xcode");
            lan2.put("name", "Swift");
            array.put(lan2);

            JSONObject lan3 = new JSONObject();
            lan3.put("id", 3);
            lan3.put("ide", "Visual Studio");
            lan3.put("name", "C#");
            array.put(lan3);
            root.put("language", array);

            System.err.println("createJsonObject: " + root.toString());

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
} 

截圖:

Json檔案:

執行結果:

2、建立Json物件

/**
     * 建立Json物件
     */
    private void createJsonObject() {
        try {
            JSONObject root = new JSONObject();
            root.put("cat", "it");
            JSONArray array = new JSONArray();

            JSONObject lan1 = new JSONObject();
            lan1.put("id", 1);
            lan1.put("ide", "Eclipse");
            lan1.put("name", "Java");
            array.put(lan1);

            JSONObject lan2 = new JSONObject();
            lan2.put("id", 2);
            lan2.put("ide", "Xcode");
            lan2.put("name", "Swift");
            array.put(lan2);

            JSONObject lan3 = new JSONObject();
            lan3.put("id", 3);
            lan3.put("ide", "Visual Studio");
            lan3.put("name", "C#");
            array.put(lan3);
            root.put("language", array);

            System.err.println("createJsonObject: " + root.toString());

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

執行結果:

相關文章