2021年1月27日 星期三

JSONObject.put 函式

要操作 JSONObject 的內容, put 是最基本的函式

put 函式
將 一組 key-value 寫入 json 物件 (JSONObject)
系列函式
JSONObject JSONObject.put(String keyname, Object value)
JSONObject JSONObject.put(String keyname, int value)
JSONObject JSONObject.put(String keyname, boolean value)
JSONObject JSONObject.put(String keyname, long value)
JSONObject JSONObject.put(String keyname, double value)
官方連結
put(String, Object )  put(String, int )  put(String, boolean )
put(String, long )  put(String, double )

雖是 Overloading (多形)
各自不同的函式
但規則相同

傳入參數keyname,value
執行動作將 key-val 寫入
回傳值JSONObject物件本身


規則說明
傳入參數狀況 執行結果
keyname 不存在 新增一組 key-value
keyname 已存在 以傳入的 value 取代原有的 value
keyname 已存在
value = null
對應的 key-value 被刪除
keyname = null 丟出 JSONException


說明範例
程式碼 JSON 內容變化
JSONObject jObj= new JSONObject(); {}
建立了一個空的 JSONObject 物件
jObj.put("K1","Tom"); {"K1":"Tom"}
新增了字串
jObj.put("K2",2); "K1":"Tom","K2":2}
新增了數字
jObj.put("K3",true); {"K1":"Tom","K2":2,"K3":true}
新增了布林值
jObj.put("K1","Jane"));
keyname-"K1" 已存在
{"K1":"Jane","K2":2,"K3":true}
"K1" 的 value 被覆蓋掉
jObj.put("K2",null);
keyname-"K2" 已存在
value 給 null
{"K1":"Jane","K3":true}
"K2" 被移除
jObj.put(null,"xxx");
keyname 給 null
丟出 JSONException : must be non-null

使用 put 在 keyname 給 null 時, 會丟出 Exception
在某些 keyname 動態給予的狀況下會出問題
另有較安全的進階版本 JSONObject.putOpt
keyname 給 null 時不會丟出 JSONException
可以參考 putOpt 函式說明

相關文章

如何使用 JSON

如何巡覽 JSONObject 物件內容

如何讀取 JSON 陣列

Jsonobject.putOpt 函式

相關資源

JSONObject 官方文件

JSONObject.put(String, Object )

JSONObject.put(String, int )

JSONObject.put(String, boolean )

JSONObject.put(String, long )

JSONObject.put(String, double )

JSON 官方文件