Json解析陣列物件
看了Gson、FastJson解析,確實簡便了很多,但是如果key關鍵字有重複的怎麼辦呢,
而且我要解析的Json比較複雜,綜合後還是考慮用JsonObject、JsonArray比較好
下面我按部分來說明
1 這是最簡單的一種
如下:"pm25":{ "key":"Hefei", "show_desc":0, "pm25":{ "curPm":"112", "pm25":"84", "pm10":"114", "level":3, "quality":"輕度汙染", "des":"輕微汙染 易感人群症狀有輕度加劇,健康人群出現刺激症狀 心臟病和呼吸系統疾病患者應減少體力消耗和戶外活動。" }, "dateTime":"2016年10月06日11時", "cityName":"合肥" },
///解析當前空氣 JSONObject data = new JSONObject(resultString);//resultString是需要解析的字串 JSONObject pM25JsonObject = data.getJSONObject("pm25"); JSONObject curPm25JsonObject =pM25JsonObject.getJSONObject("pm25"); Log.i("當前PM25:",curPm25JsonObject.getString("curPm")); Log.i("當前空氣等級:",curPm25JsonObject.getString("level")); Log.i("當前空氣質量:",curPm25JsonObject.getString("quality")); Log.i("當前空氣描述:",curPm25JsonObject.getString("des"));
2 物件裡是陣列
"info":{ "chuanyi":[ "舒適", "建議著長袖T恤、襯衫加單褲等服裝。年老體弱者宜著針織長袖襯衫、馬甲和長褲。" ], "ganmao":[ "較易發", "雖然溫度適宜但風力較大,仍較易發生感冒,體質較弱的朋友請注意適當防護。" ], "kongtiao":[ "較少開啟", "您將感到很舒適,一般不需要開啟空調。" ], "xiche":[ "不宜", "不宜洗車,未來24小時內有雨,如果在此期間洗車,雨水和路上的泥水可能會再次弄髒您的愛車。" ], "yundong":[ "較適宜", "陰天,較適宜進行各種戶內外運動。" ], "ziwaixian":[ "最弱", "屬弱紫外線輻射天氣,無需特別防護。若長期在戶外,建議塗擦SPF在8-12之間的防晒護膚品。" ] }
如下: JSONObject info = new JSONObject(string);
Iterator it = info.keys();///chuanyi ganmao
while(it.hasNext()){
String key = (String)it.next();
JSONArray indexArray = info.getJSONArray(key);
if(key.equals("chuanyi")){
Log.i("穿衣是:", "指數:"+indexArray.getString(0)+" 描述:"+indexArray.getString(1));
}
if(key.equals("ganmao")){
Log.i("感冒是:", "指數:"+indexArray.getString(0)+" 描述:"+indexArray.getString(1));
}
if(key.equals("kongtiao")){
Log.i("空調是:", "指數:"+indexArray.getString(0)+" 描述:"+indexArray.getString(1));
}
if(key.equals("xiche")){
Log.i("洗車是:", "指數:"+indexArray.getString(0)+" 描述:"+indexArray.getString(1));
}
if(key.equals("yundong")){
Log.i("運動是:", "指數:"+indexArray.getString(0)+" 描述:"+indexArray.getString(1));
}
if(key.equals("ziwaixian")){
Log.i("紫外線是:", "指數:"+indexArray.getString(0)+" 描述:"+indexArray.getString(1));
}
}
3 物件陣列物件
"f3h":{
"temperature":[
{
"jg":"20161006110000",
"jb":"23"
},
{
"jg":"20161006140000",
"jb":"25"
},
{
"jg":"20161006170000",
"jb":"25"
},
{
"jg":"20161006200000",
"jb":"22"
},
{
"jg":"20161006230000",
"jb":"21"
},
{
"jg":"20161007020000",
"jb":"20"
},
{
"jg":"20161007050000",
"jb":"20"
},
{
"jg":"20161007080000",
"jb":"20"
},
{
"jg":"20161007110000",
"jb":"22"
}
]
}
如下:
JSONObject f3h = new JSONObject(string);
JSONArray f3hTemperatureArray = f3h.getJSONArray("temperature");
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(0).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(0).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(1).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(1).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(2).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(2).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(3).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(3).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(4).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(4).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(5).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(5).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(6).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(6).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(7).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(7).getString("jb"));
Log.i("24h的預測溫度:", "時間:"+f3hTemperatureArray.getJSONObject(8).getString("jg")+" 溫度:"+f3hTemperatureArray.getJSONObject(8).getString("jb"));
4 陣列物件物件陣列
"weather":[
{
"date":"2016-10-07",
"info":{
"dawn":[
"7",
"小雨",
"19",
"東北風",
"4-5 級",
"17:49"
],
"day":[
"7",
"小雨",
"22",
"東北風",
"3-4 級",
"06:08"
],
"night":[
"1",
"多雲",
"17",
"西南風",
"微風",
"17:48"
]
},
"week":"五",
"nongli":"九月初七"
},
{
"date":"2016-10-08",
"info":{
"dawn":[
"1",
"多雲",
"17",
"西南風",
"微風",
"17:48"
],
"day":[
"1",
"多雲",
"24",
"東北風",
"微風",
"06:09"
],
"night":[
"1",
"多雲",
"16",
"東北風",
"3-4 級",
"17:47"
]
},
"week":"六",
"nongli":"九月初八"
}
]
如下:
JSONArray weather_array = new JSONArray(string);
// ////////////////////////////////////////////////////////////////////////當天
Log.i("今天的陽曆是:", weather_array.getJSONObject(0).getString("date"));
Log.i("今天的星期是:", weather_array.getJSONObject(0).getString("week"));
Log.i("今天的農曆是:", weather_array.getJSONObject(0).getString("nongli"));
JSONObject today_info = weather_array.getJSONObject(0).getJSONObject("info");
Iterator today_it = today_info.keys();
while (today_it.hasNext()) {
String today_key = (String) today_it.next();
JSONArray today_weather_info_array = today_info.getJSONArray(today_key);
/* "day": [
"7",
"小雨",
"25",
"東北風",
"4-5 級",
"06:08"
], */
if (today_key.equals("dawn")) {
Log.i("今天凌晨的溫度是:", today_weather_info_array.getString(2));
}
if (today_key.equals("day")) {
Log.i("今天白天的天氣標識是:", today_weather_info_array.getString(0));
Log.i("今天白天的天氣是:", today_weather_info_array.getString(1));
Log.i("今天白天的溫度是:", today_weather_info_array.getString(2));
Log.i("今天白天的風向是:", today_weather_info_array.getString(3));
Log.i("今天白天的風力是:", today_weather_info_array.getString(4));
Log.i("今天白天的日出時間是:", today_weather_info_array.getString(5));
}
if (today_key.equals("night")) {
Log.i("今天夜間的天氣標識是:", today_weather_info_array.getString(0));
Log.i("今天夜間的天氣是:", today_weather_info_array.getString(1));
Log.i("今天夜間的溫度是:", today_weather_info_array.getString(2));
Log.i("今天夜間的風向是:", today_weather_info_array.getString(3));
Log.i("今天夜間的風力是:", today_weather_info_array.getString(4));
Log.i("今天夜間的日落時間是:", today_weather_info_array.getString(5));
}
}///while,遍歷三個時間段的迴圈
// ////////////////////////////////////////////////////////////////////////第2天
Log.i("第2天的陽曆是:", weather_array.getJSONObject(1).getString("date"));
Log.i("第2天的星期是:", weather_array.getJSONObject(1).getString("week"));
Log.i("第2天的農曆是:", weather_array.getJSONObject(1).getString("nongli"));
JSONObject day2_info = weather_array.getJSONObject(1).getJSONObject("info");
Iterator day2_it = day2_info.keys();
while (day2_it.hasNext()) {
String day2_key = (String) day2_it.next();
JSONArray day2_weather_info_array = day2_info.getJSONArray(day2_key);
/* "day": [
"7",
"小雨",
"25",
"東北風",
"4-5 級",
"06:08"
], */
if (day2_key.equals("dawn")) {
Log.i("第2天凌晨的溫度是:", day2_weather_info_array.getString(2));
}
if (day2_key.equals("day")) {
Log.i("第2天白天的天氣標識是:", day2_weather_info_array.getString(0));
Log.i("第2天白天的天氣是:", day2_weather_info_array.getString(1));
Log.i("第2天白天的溫度是:", day2_weather_info_array.getString(2));
Log.i("第2天白天的風向是:", day2_weather_info_array.getString(3));
Log.i("第2天白天的風力是:", day2_weather_info_array.getString(4));
//Log.i("第2天白天的日出是:", day2_weather_info_array.getString(5));
}
if (day2_key.equals("night")) {
Log.i("第2天夜間的天氣標識是:", day2_weather_info_array.getString(0));
Log.i("第2天夜間的天氣是:", day2_weather_info_array.getString(1));
Log.i("第2天夜間的溫度是:", day2_weather_info_array.getString(2));
Log.i("第2天夜間的風向是:", day2_weather_info_array.getString(3));
Log.i("第2天夜間的風力是:", day2_weather_info_array.getString(4));
//Log.i("第2天夜間的日落是:", day2_weather_info_array.getString(5));
}
}///while,遍歷三個時間段的迴圈
親測可用
總結如下:
{ }是物件,需要是JsonObject.getString(str)
[ ]是陣列,需要是JsonArray.getString(i)
{[ ] ,[ ]}物件裡是陣列,需要用JsonObject Iterator while迴圈
[{ },{ }]數組裡是物件,需要用JsonArray.getJsonObject(i)
相關推薦
Json解析陣列物件
看了Gson、FastJson解析,確實簡便了很多,但是如果key關鍵字有重複的怎麼辦呢, 而且我要解析的Json比較複雜,綜合後還是考慮用JsonObject、JsonArray比較好 下面我按部分來說明 1 這是最簡單的一種 "pm25":{ "key"
json解析陣列和物件
com.alibaba.fastjson.JSONObject jso = null; try { jso = JSON.parseObject(result);//json字串轉換成jsonobject物件 JSONArray objects
JSON傳陣列物件到後臺的過程和接收(TP框架)
TP框架中,前臺傳送陣列型別的json字串到後臺,後臺I方法獲取到的json字串會改變(可以在chrome下抓包看response), 用$_POST獲取之後再用json_decode轉化為陣列就能成功; 在I方法獲取過程中使用strip_tags替代掉htmlspecialchar
Newtonsoft.Json解析陣列 Newtonsoft.Json解析陣列
Newtonsoft.Json解析陣列 以下是遺傳json陣列: var jsonInfo=[{"name":"abc","id":"1","count":0},{"name":"def","id":"2","count":1}] 如果使用傳統的JsonCon
json解析陣列
1.在Android中包含四個與JSON相關的類和一個Exceptions: a.JSONObject 這是系統中有關JSON定義的基本單元,其包含一對兒(Key/Value)數值。 b.JSONArray 它代表
解析json陣列,取其中一部分組成新陣列物件
var dataArr = [{id:"1111",name:"aaa",age:"22"},{id:"2222",name:"bbb",age:"33"}]; var jsonTarget=[]; var ids = ""; //第一種方法 for (var i = 0;
解析json陣列物件
專案中第一次遇到解析json時返回的是陣列物件,經查閱相關資料,解決方法如下: 第一種方法: import java.lang.reflect.Type; import java.util.Iterator; import java.util.LinkedLis
利用Gson解析request得到的Json字串陣列,並實現與具體物件間的轉換
當利用request.getParameter()方法得到Json字串陣列後,如果想要將其轉換成需要的Class物件時,可以利用Gson中自帶的一些物件來解析: ArticleBean article = new ArticleBean(); String
hive中UDF開發:解析json物件和解析json陣列物件
hive預設函式: +-------------------------------------------------------------------+ json +--------------
自制JSON解析庫C++(一)--對JavaScript物件的理解
JSON只有兩種結構:鍵值對和陣列;它們之間可以相互巢狀,形成樹形結構,葉子節點有字串、數字、false、true、null。 在這之前,首先談談對JavaScript核心思想的理解: 在JS的世界裡,沒有類,只有物件,物件怎麼來,通
JSON陣列物件和物件陣列
Json的簡單介紹 從結構上看,所有的資料最終都可以分成三種類型: 第一種型別是scalar(標量),也就是一個單獨的string(字串)或數字(numbers),比如“北京”這個單獨的詞。 第二種型別是sequence(序列),也就是若干個相關的資料按照一定順序並列在一起,又叫做arr
Javascript中的Array(陣列) 、{}(對映) 與JSON解析
下面是總結: 1.將javascript中的Array和{}轉化為json字串可以使用json2.js,原始碼地址https://github.com/douglascrockford/JSON-js。 2.將json字串轉為javascript物件,可以使用javascript自帶的eva
json與JS物件,陣列 (筆記)
js只要用{}包起來的都是物件,都可以用物件取值A.B的形式取值。 json字串'{"a":"b","c":"D"}' 實際就是字串,使用取值方式(JSON.parse): var jsonString = '{"bar":"property","baz":3}';
在Spring中實現後臺對JSON傳的陣列物件給List型別的引數繫結
就是在後臺接收前端傳的JSON串,其中包含陣列型別的資料。例如傳一個user使用者列表,後臺用List來接收。 其實有多種方法都可以實現,大概就是JSON方式,和非JSON的key/value那種方法。但是後臺前輩告訴我,要考慮前臺不是所有都會這兩種傳參的方式,
JSON轉化成物件或者陣列 使用jQuery簡單好用
直JSON轉化成物件或者陣列例項,直接上例子 JSON資料轉化成物件 for(var i=0; i<jsons.length; i++){ alert(json[i].bookid+"--------- " + json[i].b
Json陣列物件取值
1.資料格式 {"data":[{"username":"xxx","avatar":"xxx","gift_name":"xxx"},{"username":"xxx","avatar":"xxx","gift_name":"xxx"},{"username":"xxx","ava
js字串,陣列,物件,正則,canvas,json常用方法
字串 // split() 方法用於把一個字串分割成字串陣列。 let str="1,1,1,1" str.split(",") // [1,1,1,1] 陣列 concat() // 作用:陣列拼接 // 使用: this.server = this.server.con
Android 利用gson將json字串陣列轉陳物件的方法
前提:下載Gson.jar List<DaShangScanPostsBean> persons = new ArrayList(); Gson gson = new Gson();List<JsonElement> list = new Array
利用urllib讀取JSON,然後將JSON解析為Python物件 —— python學習筆記
1. 題目: 請利用urllib讀取JSON,然後將JSON解析為python物件: 題目的意思是使用urllib訪問一個介面,這個介面會放回json格式的資料,請將這一資料解析成python物件。 題目是廖雪峰老師的python教程中urllib的練習。 本篇博文只是針對這一題目,沒有
Java獲取json陣列物件的方法
JSONArray jsonArray1 = jsonObject.getJSONArray("result"); for (int i = 0; i < jsonArray1.leng