編輯:關於android開發
“階段一”是指我第一次系統地學習Android開發。這主要是對我的學習過程作個記錄。
最近學到解析JSON格式的網絡數據,而作業也要求自己找一個天氣預報的API地址,然後解析其中JSON格式的數據。可能是因為找的是免費的API地址,在百度APIStore裡的,它那JSON返回示例的數據,跟我獲取之後,打Log顯示出來的有些差異,這只是吐槽一下哈。另外,推薦初學者到“聚合數據”這個網站看一下那裡的示例代碼,寫得很規范,思路、注解都很清楚。
因為第一次做解析JSON,而且這個API的數據還蠻復雜,在解析、讀取的時候,寫著寫著就蒙圈了。所以這次主要是分享一下,我是如何理解解析JSON的方法和怎樣獲取其中的數據,數據格式由簡單到復雜。而其基本語法,可以查看百度百科,那裡面講得很詳細。
以下分析,都是基於這個假設,請求的數據都轉換為String類型,並保存在content變量中。
1、{"resultcode": "200", "reason": "查詢成功!"}
這種情況最好理解,只要JSONObject response = new JSONObject(content)和String result = response.getString("resultcode");而我是這麼理解的,一對花括號{}就代表一個對象,所以response是這條數據的JSONObject,當實現這個對象之後,就當作這個花括號{}被去除掉了,這麼想得話,對於理解復雜的數據時或有幫助。當“值”的位置(即冒號後面的字符串)沒有任何括號時,就可以調用get方法來取值。
2、{"resultcode": "200", "reason": "查詢成功!", "future": [ { "temperature": "28℃~36℃", "weather": "晴轉多雲" } ] }
而當“值”的位置有方括號[]時(跟數組類似),就要用上一級的對象調用getJSONArray("future"),這裡就是response,當執行了這一步,也可以當作把方括號去掉。方括號[]裡,每一對花括號{}也代表一個對象,它也有下標,也是從0開始。
所以取temperature的代碼是:
JSONObject response = new JSONObject(content);// ==> "resultcode": "200", "reason": "查詢成功!", "future": [ { "temperature": "28℃~36℃", "weather": "晴轉多雲" } ]
JSONArray future= response.getJSONArray("future");// ==> { "temperature": "28℃~36℃", "weather": "晴轉多雲" }
JSONObject futureObject= future.getJSONObject(0);// ==> "temperature": "28℃~36℃", "weather": "晴轉多雲"
String temperature= futureObject.getString("temperature");
3、{ "resultcode": "200",
"reason": "查詢成功!",
"today": { "city": "天津", "date_y": "2014年03月21日", "week": "星期五", "temperature": "8℃~20℃", "weather": "晴轉霾", "weather_id": { "fa": "00", "fb": "53" } },
"future": [ { "temperature": "28℃~36℃", "weather": "晴轉多雲", "weather_id": { "fa": "00", "fb": "01" }, "wind": "南風3-4級", "week": "星期一", "date": "20140804" },
{ "temperature": "28℃~36℃", "weather": "晴轉多雲", "weather_id": { "fa": "00", "fb": "01" }, "wind": "東南風3-4級", "week": "星期二", "date": "20140805" }
]
}
(1)讀"today"裡的"city"
JSONObject response = new JSONObject(content);// ==>同上
JSONObject today= reponse.getJSONObject("today");// ==> "city": "天津", "date_y": "2014年03月21日", "week": "星期五", "temperature": "8℃~20℃", "weather": "晴轉霾", "weather_id": { "fa": "00", "fb": "53" }
String city= today.getString("city");
(2)讀"future"的第二個"temperature"的"weather_id"的"fa"
JSONObject response = new JSONObject(content);// ==>同上
JSONArray future= response.getJSONArray("future");
JSONObject futureObject= future.getJSONObject(1);// ==> "temperature": "28℃~36℃", "weather": "晴轉多雲", "weather_id": { "fa": "00", "fb": "01" }, "wind": "東南風3-4級", "week": "星期二", "date": "20140805"
JSONObject weather_id= futureObject.getJSONObject("weather_id");// ==> "fa": "00", "fb": "01"
String id= weather_id.getString("fa");
總結:對於解析JSON,我是把它理解成是一個不斷去括號的過程。先找到你要獲取的數據,然後從最外層開始,一層層的剝。有花括號{}的就getJSONObect(除最外層的,最外層的是new JSONObject,這也是第一步要做的),有方括號[]的就getJSONArray。直到“值”的位置沒有任何括號時,就能讀取數據了。。
Linux2.6內核協議棧系列--TCP協議1.發送,linux2.6--tcp在介紹tcp發送函數之前得先介紹很關鍵的一個結構sk_buff,在linux中,sk_bu
Android 自定義控件的使用,android自定義控件首先自定義一個attrs.xml的資源文件,聲明自定義屬性 <?xml version=1.0 enco
初識 Android,初識android 創建博客有一年的時間了,一直沒把它用起來,頗感慚愧。近日突感有寫博客的沖動,更可怕的是這種沖動似乎比我體內的洪荒之力更為凶猛。
png圖片尺寸大小調整,png圖片尺寸大小 Android 開發中經常遇到各種hdpi,xhdpi,xxhdpi....很多尺寸大小的png圖片要求. 網上也
使用Eclipse開發,Java Compiler中Annotation