一、JsonObject遍歷
在使用JsonObject進行數據處理的時候,我們經常需要遍歷JsonObject來獲取其中的數據。下面我們將使用一個簡單的Json格式作為示例:
{ "name": "小明", "age": "18", "gender": "男" }
我們可以通過以下方式遍歷JsonObject的key:
JSONObject jsonObject = new JSONObject(jsonString); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); // 在這裡進行業務處理 }
在上面的代碼中,我們通過調用JSONObject的keys()方法來獲取JsonObject中所有鍵的迭代器,然後調用迭代器的next()方法逐個遍歷JsonObject中的鍵。
二、JsonObject遍歷value
在遍歷JsonObject的時候獲取value也是很常見的需求。
JSONObject jsonObject = new JSONObject(jsonString); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); Object value = jsonObject.get(key); // 在這裡進行業務處理 }
我們可以通過調用JsonObject的get()方法來獲取相應鍵的值。
三、遍歷JsonObject內部的JsonObject
在JsonObject內部還可能存在其它的JsonObject,我們需要先獲取內部的JsonObject,再對內部JsonObject進行遍歷。
{ "name": "小明", "age": "18", "address": { "country": "中國", "province": "廣東", "city": "深圳" } }
JSONObject jsonObject = new JSONObject(jsonString); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); Object value = jsonObject.get(key); if(value instanceof JSONObject){ JSONObject innerJsonObject = (JSONObject) value; // 對內部JsonObject進行遍歷 } // 在這裡進行業務處理 }
在上面的代碼中,我們判斷該鍵對應的值是否是JsonObject,如果是則將其轉換為JSONObject並進行遍歷。
四、JsonArray遍歷
在JsonObject內部還經常存在JsonArray,我們需要對JsonArray進行遍歷。
{ "name": "小明", "hobbies": ["籃球", "足球", "游泳"] }
JSONObject jsonObject = new JSONObject(jsonString); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); Object value = jsonObject.get(key); if(value instanceof JSONArray){ JSONArray innerJsonArray = (JSONArray) value; for (int i = 0; i < innerJsonArray.length(); i++) { Object innerValue = innerJsonArray.get(i); // 在這裡進行業務處理 } } // 在這裡進行業務處理 }
在上面的代碼中,我們判斷該鍵對應的值是否是JsonArray,如果是則遍歷JsonArray中的元素並進行業務處理。
五、JsonObject遍歷方法
JsonObject內部還包含了各種各樣的方法,我們需要對這些方法進行遍歷。
JSONObject jsonObject = new JSONObject(jsonString); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); if(key.equals("name")){ String name = jsonObject.getString(key); // 業務處理代碼 }else if(key.equals("age")){ int age = jsonObject.getInt(key); // 業務處理代碼 }else if(key.equals("gender")){ boolean gender = jsonObject.getBoolean(key); // 業務處理代碼 } }
在上面的代碼中,我們判斷該鍵的值是什麼類型並將其轉換為對應的類型,再進行業務處理。
六、JsonObject遍歷對象
在JsonObject內部也可能存在自定義的對象,我們需要對這些自定義對象進行遍歷。
{ "name": "小明", "school": { "name": "清華大學", "rank": 1 } }
public class School { private String name; private int rank; // setter和getter方法 } JSONObject jsonObject = new JSONObject(jsonString); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); Object value = jsonObject.get(key); if(value instanceof JSONObject){ if(key.equals("school")){ JSONObject innerJsonObject = (JSONObject) value; School school = new School(); school.setName(innerJsonObject.getString("name")); school.setRank(innerJsonObject.getInt("rank")); // 業務處理代碼 } } // 在這裡進行業務處理 }
在上面的代碼中,我們判斷該鍵對應的值是否是對象類型,如果是則將該對象轉換為自定義的對象並進行業務處理。
七、JsonObject遍歷多級
在JSONObject內部可能嵌套多層對象,我們需要對多級對象進行遍歷。
{ "name": "小明", "school": { "name": "清華大學", "address": { "country": "中國", "province": "北京", "city": "海淀" } } }
public class Address { private String country; private String province; private String city; // setter和getter方法 } public class School { private String name; private Address address; // setter和getter方法 } JSONObject jsonObject = new JSONObject(jsonString); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); Object value = jsonObject.get(key); if(value instanceof JSONObject){ if(key.equals("school")){ JSONObject innerJsonObject = (JSONObject) value; School school = new School(); school.setName(innerJsonObject.getString("name")); JSONObject addressObject = innerJsonObject.getJSONObject("address"); Address address = new Address(); address.setCountry(addressObject.getString("country")); address.setProvince(addressObject.getString("province")); address.setCity(addressObject.getString("city")); school.setAddress(address); // 業務處理代碼 } } // 在這裡進行業務處理 }
在上面的代碼中,我們逐級判斷對象類型,再將其轉換為相應的自定義對象並進行業務處理。
八、JsonObject遍歷鍵值對
有時我們需要同時獲取JsonObject的key和value,我們可以使用map存儲鍵值對。
JSONObject jsonObject = new JSONObject(jsonString); Map map = new HashMap(); Iterator iterator = jsonObject.keys(); while(iterator.hasNext()){ String key = iterator.next(); Object value = jsonObject.get(key); map.put(key, value); } // 進行業務處理
在上面的代碼中,我們通過迭代器遍歷JsonObject的key並獲取value,再將鍵值對存儲到map中。
九、Json遍歷選取
在使用Json進行開發的時候,通常情況下我們不會對Json進行全遍歷,而是只選取一部分數據進行處理。
{ "name": "小明", "age": "18", "gender": "男" }
JSONObject jsonObject = new JSONObject(jsonString); String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); // 進行業務處理
在上面的代碼中,我們只選取了Json中的name和age兩個字段。
總結
使用JsonObject進行數據處理是一項非常常見的工作,本文詳細講解了JsonObject遍歷key的各種方式,其中涉及到了遍歷JsonArray、遍歷多級JsonObject等高級技巧。希望本文能夠對大家有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/227861.html