2021年1月19日 星期二

如何讀取 JSON 陣列

內文書籤

範例:取出 JSON 陣列

Length 函式說明

get 函式說明

get 糸列函式 特定資料型別

opt 函式說明

opt 糸列函式 特定資料型別

opt 系列函式 指定 fallback


巡覽 JSON 陣列內容
jstr = ["1",1,true];
jsonAry = new JSONArray(jstr);
try {
 for (int i = 0; i < jsonAry.length(); i++)
 {
  Object obj = jsonAry.get(i);
  log(obj.toString());
 }
}
catch (JSONException ex)
{
 Debug.log(ex);
}
因為失敗時會丟出 JSONException
所以用 try-cath 包起來


用來操作 Json 陣列的物件類別是 JSONArray

JSONArray
org.json.JSONArray
JSONArray 官方文件

要從 JSONObject 中取出陣列物件
要用到 getJSONArray()


要得到 JSONArray 陣列長度,則要用 length

Length 函式
org.json.JSONArray.Length
int length()
跟 ArrayList 不同,不是使用 size()
官方文件

取得陣列中元素是用 get 或 opt

get 函式
取得陣列中的元素
Object get(int index)
傳入 index,該位置的內容以 Object 傳回
如果 index 大於陣列長度,會丟回 JSONException
官方文件


取回 Object 型態有時還需要轉型處理
如果已經確定資料型別
可以直接使用指定回傳資料型別的 get 函式

get 糸列函式 [特定資料型別]
取得 JSONArray 中的特定型別元素
String getString(int index)
int getInt(int index)
boolean getBoolean(int index)
long getLong(int index)
double getDouble(int index)
JSONArray getJSONArray(int index)
JSONObject getJSONObject(int index)
傳入 index,傳回 該位置的內容以特定型別傳回
如果 index 大於陣列長度
或是該位置資型態不符
(像是使用 getInt(),但取得的內容卻不為數字)
會丟回 JSONException
官方文件
getString  getInt  getBoolean  getLong
getDouble  getJSONArray  getJSONObject

在無法確保取回的資料是否安全時,可使用 opt

opt 函式
取回 JSON 陣列中元素
Object opt(int index)
如果 index 大於陣列長度
或資料型態不符
會回傳 null
官方文件

opt 也有指定資料型別的版本

opt 糸列函式 [特定資料型別]
以較安全的方式取回 JSONArray 中元素
Object opt(int index)
booleanoptBoolean(int index)
double optDouble(int index)
int optInt(int index)
JSONArray optJSONArray(int index)
JSONObject optJSONObject(int index)
long optLong(int index)
String optString(int index)
如果 index 大於陣列長度,或資料型態不符
optString 會傳回空字串
optInt 會傳回 0
optBoolean 會傳回 false
optLong 會傳回 0
optDouble 會傳回 NaN
opt 會傳回 null
optJSONArray 會傳回 null
optJSONObject 會傳回 null
官方文件
optString  optInt  optBoolean  optLong
optDouble  optJSONArray  optJSONObject

opt 可以指定失敗時回傳預設內容的版本

opt 系列函式 + fallback
取回 JSONArray 中的元素,取值失敗時傳回指定的 fallback
String optString(int index , String fallback)
int optInt(int index , int fallback)
booleanoptBoolean(int index , boolean fallback)
double optDouble(int index , double fallback)
long optLong(int index , boolean fallback)
傳回 index 及失敗時回傳值,傳回該位置的內容
取值失敗
(ex: index 大於陣列長度,取回的值資料型態不符)
會傳回參數指定的 fallback
官方文件
optString  optInt  optBoolean  optLong
optDouble 


相關文章

如何使用 JSON

如何巡覽 JSONObject 物件內容

相關資源

JSONObject 官方文件

JSONArray 官方文件

Iterator 官方文件(Android Developers)

JSON 官方文件