Json 动态获取key 或者获取value
生活随笔
收集整理的這篇文章主要介紹了
Json 动态获取key 或者获取value
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在解析之前首先要清楚要解析的json 是字符形式 還是數組形式
1 字符形式?
public String json = "{\"年齡\":\"23\",\"愛好\":\"游戲\",\"姓名\":\"小牧\"}";
看看解析效果圖
使用JSONObject 看下面代碼
try {JSONObject jsonObject = new JSONObject(json);Iterator<String> it = jsonObject.keys();while (it.hasNext()) {String key = it.next();Log.e("=====key", key);String value = jsonObject.get(key).toString();Log.e("=====value", value);}} catch (JSONException e) {e.printStackTrace();}
打印結果
2 數組形式
public String jsonn = "[{\"年齡\":\"23\"},{\"愛好\":\"游戲\"},{\"姓名\":\"小牧\"}]";
解析效果圖
使用JSONArray?
try {JSONArray jsonArray = new JSONArray(jsonn);Log.e("===jsonArray", jsonArray.toString());for (int i = 0; i < jsonArray.length(); i++) {JSONObject object = jsonArray.getJSONObject(i);Iterator<String> keys = object.keys();while (keys.hasNext()) {String key = keys.next();Log.e("=======key", key);String value = object.get(key).toString();Log.e("=====value", value);}}} catch (JSONException e) {e.printStackTrace();Log.e("=====error", e.getMessage());}
打印結果如下
?
這樣看著沒難度啊,來整個復雜點的 看看把
[{"中午餐": [{"主食": ["米飯", "饅頭"]}, {"主菜": ["辣白菜五花肉", "地三鮮"]}]
}, {"晚餐": [{"主食": ["面條", "饅頭"]}, {"主菜": ["土豆肉片", "江三鮮"]}]
}]
?把 json 定義一個string 如下
public String json = "[{\n" +"\"中午餐\": [{\n" +"\"主食\": [\"米飯\", \"饅頭\"]\n" +"}, {\n" +"\"主菜\": [\"辣白菜五花肉\", \"地三鮮\"]\n" +"}]\n" +"}, {\n" +"\"晚餐\": [{\n" +"\"主食\": [\"面條\", \"饅頭\"]\n" +"}, {\n" +"\"主菜\": [\"土豆肉片\", \"江三鮮\"]\n" +"}]\n" +"}]";
把數據獲取出來,然后自己放到布局上對應的位置 ,當時看到的時候心情也是一陣復雜呢
不要著急,看下面的代碼
try {JSONArray array = new JSONArray(json);for (int i = 0; i < array.length(); i++) {JSONObject object = array.getJSONObject(i);Iterator<String> keys = object.keys();while (keys.hasNext()) {//中午餐的keyString key = keys.next();Log.e("key", key);//中午餐里面的內容JSONArray array1 = object.getJSONArray(key);for (int j = 0; j < array1.length(); j++) {JSONObject object1 = array1.getJSONObject(j);Iterator<String> keys1 = object1.keys();while (keys1.hasNext()) {//主食keyString kStr = keys1.next();Log.e("kStr", kStr);//主食key里面的數組JSONArray array2 = object1.getJSONArray(kStr);for (int k = 0; k < array2.length(); k++) {//主食key里面的數組中的值Log.e("content", array2.getString(k));}}}}}} catch (JSONException e) {e.printStackTrace();}
效果圖
總結
以上是生活随笔為你收集整理的Json 动态获取key 或者获取value的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信四字网名大全
- 下一篇: 求宿开头的成语接龙!