原始碼:
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(); } }
執行結果: