JSON
一、簡介
全稱:JavaScript Ojbect Notation,JavaScript對象標記
功能:輕量級數據交換語言
語法嚴格
兩種建立JS對象的方式
//方式一:通過function function Person(xid,xname,xsal){ this.id=xid; this.name=name; this.sal=xsal; } var p = new person(1,"張三",9500); //方式二:通過字面量,後面那一串字符串就是所謂的json var p={id:1,name:"張三",sal=9500};
二、語法
- {} 對象
- [] 數組
- , 分隔屬性
- : 左邊爲屬性名,右邊爲屬性值
屬性名可用可不用引號括起,屬性值爲字符串一定要用引號括起
三、結構
JSON建構於兩種結構:
- “名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解爲對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分語言中,它被理解爲數組(array)。
四、使用
1. 說明
需要json-lib-2.1-jdk15.jar,但是Android SDK中內置了JSON解析器(不同於這個jar包,Android中的比較精簡),所以不用導入。
2. Java項目中使用
需要導入以下jar包
//將整個對象轉爲json數組
JSONArry ja = JSONArray.fromObject(Object);
//只將對象中的某些屬性轉成JSON對象
jsonConfig.setExcludes(String[] );//不參與轉成JSON文本屬性
JSONObject ja = JSONObject.fromObject(Object,jsonConfig);
3. Android項目中使用
3.1 JSONObject
本質:是一個LinkedHashMap<String, Object>
構造方法
/** * 功能:構造方法,從json字符串中創建鍵值映射(JSON對象) * 參數json:json字符串 * 返回值:JSONObject */ public JSONObject(String json) throws JSONException { this(new JSONTokener(json)); }
獲取和設置方法
//返回對應name的值,如果沒有就返回null Object opt(String name) //更精準的獲取方法 JSONObject optJSONObject(String name) JSONArray optJSONArray(String name) ... //返回對應name的值,如果沒有就拋出異常 Object get(String name) //更精準的獲取方法 getJSONObject(String name) getJSONArray(String name) ... //構建name和value的映射,如果已存在就覆蓋,如果value爲null就移除 JSONObject put(String name, Object value)
3.2 JSONArray
本質:是一個ArrayList<Object>
構造方法
/** * 功能:構造方法,從json字符串中創建json數組 * 參數json:json字符串 * 返回值:JSONOArray */ public JSONArray(String json) throws JSONException { this(new JSONTokener(json)); }
獲取和設置方法
//返回對應index的值,如果沒有就返回null Object opt(int index) //更精準的獲取方法 JSONArray optJSONArray(int index) JSONObject optJSONObject(int index) ... //返回對應index的值,如果沒有就拋出異常 Object get(int index) //更精準的獲取方法 getJSONObject(int index) getJSONArray(int index) ... //往指定索引添加值,如果已存在就覆蓋 JSONArray put(int index, Object value)
五、XML與JSON
- XML:常用於配置文件,結構清晰,易讀
- JSON:常用於傳輸數據,傳輸量小