WebBuilder使用的操作json的jar包是org.json,下面是相關的文檔及源碼,搜索就可得
文檔:http://www.json.org/javadoc/org/json/JSONObject.html
源碼:https://github.com/douglascrockford/JSON-java
本文默認讀者熟練使用JSON,了解JSON語法,開始正題:
從文檔和源碼看來org.json沒有多少東西,的確他就是很簡單,沒有多少東西,在這幾個僅有的類中,我們要經常使用也只有JSONArray和JSONObject兩個,先看一下JSONObject
- JSONObject
(1)構造函數(重點關注以下幾個):
JSONObject() 構造一個空的JSON對象:{} |
JSONObject(JSONObject jo, java.lang.String[] names) 通過其他的JSONObject構建,取其中的幾個KEY |
|
JSONObject(java.util.Map map) 根據map構造,我們都知道map就是鍵值對,跟JSON一樣. |
|
JSONObject(java.lang.String source) 根據一個字符串構造,需要注意的是字符串要符合 json的語法{} |
|
(2)重要方法,最需要關注的方法就是讀和寫,讀有兩個方法get和opt,兩個方法都用於讀取,區別是如果提供的KEY並不存在,get會拋出異常,而opt會返回一個默認值
有大量getInt(String key) ;getString(...);optDouble()..........
對於改,寫操作只有一個方法put,put方法的使用方式是put(key,newValue);這樣就基本上掌握了JSONObject的使用了,下面還有幾個方法,其他的冷門如果遇到我們再補充
has(key),isNull(key)判斷key是否存在
keys()獲取所有的key,返回值為Iterator集合
remove(key)移除某屬性
toString()生成json字符串
- JSONArray
JSONArray就是一個數組,當然准確地說應該是個ArrayList,這點我們可以從源碼的構造函數看到,同樣我們先關注他的構造函數,與JSONObject相同有一個空的構造函數,一個根據字符串的構造函數,比較JSONObject有一個根據map的構造函數,JSONArray有一個根據Collection的構造函數。
JSONArray的方法我們同樣使用get和opt來讀取數據,put方法來添加修改
注意一點:操作JSONObject我們都是使用key來操作的,但JSONArray我們是使用INDEX下標值來操作的。
org.json的知識就是上面這些,我們來看看工具類JsonUtil使用它做了什么:
1.public static HashMap<JSONObject, JSONObject> getRelations(JSONArray jsonArray, ArrayList<JSONObject> children, String key){}
調用方法2,獲取關系map
2.private static void markParent
(HashMap<JSONObject, JSONObject> map,JSONObject parent,JSONArray jsonArray,ArrayList<JSONObject> children, String key){}
3.public static String insert(JSONArray ja, String text, int index)
在數組的某個位置插入內容
4.public static JSONObject readObject(File file)
讀取文件內容轉換為JSONObject
5.public static JSONArray readArray(File file)
讀取文件內容轉換為JSONArray
6.public static String optString(JSONObject jo, String key)
在一個JSONObject中找出key對應的value
7.public static String optString(JSONArray ja, int index)
在一個JSONArray里找到一個下標對應值
8.public static Object opt(JSONObject jo, String key)
與6相似,返回Object
9.public static Object opt(JSONArray ja, int index)
與7相似,返回Object
10.public static void clear(JSONObject jo)
把JSONObject的每一個屬性都設置為空
11.public static String getText(ArrayList<String> list)
把一個ArrayList轉化為字符串數組的形式
12.public static JSONObject findObject(JSONArray ja, String key, String text)
在JSONArray里找出一個符合key,text的JSONObject