通過開源框架AsyncHttpClient獲取Json資料
json簡介
Json詳細解析可見 http://redarmychen.iteye.com/blog/980243
JSON是JavaScript Object Notation的縮寫,可見JSON來源於JavaScript。JSON資料是一系列鍵值對的集合。
下面的程式碼就是一個JSON:
{
"phone" : ["12345678", "87654321"], // 陣列
"name" : "tianjiefeng", // 字串
"age" : 100, // 數值
"address" : { "country" : "china", "province" : "jiangsu" }, // JSON物件
"married" : false // 布林值
}
JSON是以key/value的形式存在的,key是Strng型別的,value的型別可以是一個數組,可以是一個字串,可以是一個數值,也可以是一個布林值,甚至可以是一個JSON物件
我們對json有一定了解之後,接下來,讓我們來了解android中對json的解析
同樣我們和之前專案類似。採用開源框架來編寫程式。
解析json資料步驟:
1.引入jar檔案
2.新增網路許可權
3.建立客戶端物件
4.處理get請求,在get請求中new出JsonHttpResponseHandler物件
5.返回JSONObject物件或者JSONOArray物件(JSONOArray物件遍歷json陣列
6.JSONObject物件get(“屬性名”),getString(“屬性名”),getInt(“屬性名”)等方法來獲取指定屬性名的值
具體例項:
1.引入jar檔案
2.新增訪問網路許可權
<uses-permission android:name="android.permission.INTERNET"/>
3.Activity主要程式碼:程式碼中有詳細註釋,請認真觀看
- package com.example.android_json;
- import org.apache.http.Header;
-
import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import com.loopj.android.http.AsyncHttpClient;
- import com.loopj.android.http.JsonHttpResponseHandler;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.widget.Toast;
- publicclass MainActivity extends Activity {
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // http://172.16.237.200:8080/video/JsonServlet
- initData();
- }
- privatevoid initData() {
- // 建立客戶端物件
- AsyncHttpClient client = new AsyncHttpClient();
- String url = "http://172.16.237.200:8080/video/JsonServlet";
- Toast.makeText(this, "傳送請求到伺服器", 0).show();
- client.get(url, new JsonHttpResponseHandler() {
- //返回JSONObject物件|JSONOArray物件
- @Override
- publicvoid onSuccess(int statusCode, Header[] headers,
- JSONArray response) {
- // TODO Auto-generated method stub
- super.onSuccess(statusCode, headers, response);
- if (statusCode == 200) {
- //遍歷json陣列
- for (int i = 0; i < response.length(); i++) {
- try {
- // 獲取具體的一個JSONObject物件
- JSONObject obj = response.getJSONObject(i);
- //JSONObject物件get(“屬性名”),getString(“屬性名”),getInt(“屬性名”)等方法來獲取指定屬性名的值
- System.out.println("序號" + obj.getString("id")
- + "--------姓名:" + obj.getString("name")
- + "--------密碼:" + obj.getString("pass")
- + "--------其他:" + obj.getString("pass"));
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- });
- }
- }
在控制檯輸出結果:
常見錯誤錦籍:
一、當遍歷json陣列是,若沒有對於json資料就會報錯
例如:
- //遍歷json陣列
- for (int i = 0; i < response.length(); i++) {
- try {
- // 獲取具體的一個JSONObject物件
- JSONObject obj = response.getJSONObject(i);
- //JSONObject物件get(“屬性名”),getString(“屬性名”),getInt(“屬性名”)等方法來獲取指定屬性名的值
- System.out.println("序號" + obj.getString("id")
- + "--------姓名:" + obj.getString("name")
- + "--------性別:" + obj.getString("sex")
- + "--------密碼:" + obj.getString("pass"));
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
執行效果如下
解析:json檔案中沒有sex欄位,若我 們在程式中寫入則會報如上錯誤,所有在編寫程式的時候應多加註意欄位的對應。
相關推薦
通過開源框架AsyncHttpClient獲取Json資料
json簡介 Json詳細解析可見 http://redarmychen.iteye.com/blog/980243 JSON是JavaScript Object Notation的縮寫,可見JSON來源於JavaScript。JSON資料是一系列鍵值對的集合。 下面
通過JAVA從高德地圖URL連接獲取json資料 解析並存入資料庫的程式舉例
首先 進入高德開放平臺 按官網教程獲取key 這裡以杭州某區域車站資訊舉例 通過線上解析工具獲取json格式的資料 通過此資料建立實體類 package geturl; import java.util.List; public class JsonBean
jsTree 通過ajax 獲取json資料 載入樹形選單
var ajaxTreeSample = function() { $("#tree_4").jstree({ "core" : { "themes" : { "
Spring 3.2.* MVC通過Ajax獲取JSON資料報406錯誤
Spring 3.2.x通過@ResponseBody標籤返回JSON資料的方法都報406錯: Failed to load resource: the server responded with a status of 406 (Not Acceptable) 以及報錯描述: The resource i
Python Web框架 flask post JSON資料獲取方式總結
提交任務: curl -i -H "Content-Type: application/json" -X POST -d '{"appIds": [ {"appid": "1076877374"},
AngularJS學習筆記(3)——通過Ajax獲取JSON資料
通過Ajax獲取JSON資料 以我之前寫的與使用者互動的動態清單列表為例,使用JSON前todo.html程式碼如下: <!DOCTYPE html> <html ng-app="todoApp"> <head>
關於Struts2框架下回傳JSON資料被打斷的問題
在struts2的返回結果集做出瞭如下配置: <package name="easyUIorder" extends="json-default"> <action name="queryList2" class="orderAction" metho
SpringMvc+Spring4+hibernate框架 ajax提交JSON資料Controller接收
jsp頁面程式碼: $.ajax({ type: "POST", url: "revise/modifyPass",
Java如何獲取JSON資料中的值
場景:在介面自動化場景中,下個介面傳送的請求引數,依賴上個介面請求結果中的值。需要將獲取值作為全域性引數引用。 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io
Django中通過指令碼的方式將json資料寫入資料庫
這裡記錄一下django中通過指令碼的方式寫入json資料的一些技巧。 通過指令碼不僅可以將已有的json資料寫入資料庫,而且可以批量地模擬一些後臺資料,方便進行頁面的展示。
獲取JSON資料的方法
json資料的獲取有很多方法,主要細說一下ajax獲取的方法。 json檔案內容(item.json) [ { “name”:“張國立”, “sex”:“男”, “email”:"[email protected]", “url”:"./img/1.jpg" }, {
利用Ajax獲取JSON資料
JSON物件與JSON字串的相互轉換 //JSON物件 屬性名必須使用雙引號包起來 var obj={"a":1,"b":2}; var ary=[{"a":1,"b":2},{"a":10,"b":20},{"a":100,"b":200}]; //JSON字串:將JS
for in 迴圈獲取json資料中'key'與'value'
一、for in 方法 a.for in 迴圈物件 var data = {name:'mcYang0929',age:'25',sex:'man'}; for(var key in data) { console.log(key); //
c# post請求獲取json資料
/// <summary> /// get http請求獲取位置資訊 /// </summary> interna
Android開源框架AsyncHttpClient android async http 使用
android-async-http 開源框架可以使我們輕鬆地獲取網路資料或者向伺服器傳送資料,最關鍵的是,它是非同步框架,在底層使用執行緒池處理併發請求,效率很高,使用又特別簡單。 以往我們在安卓上做專案,比如要下載很多圖片、網頁或者其他的資源,多數開發者會選擇
springMvc接收Http請求獲取Json資料
1、用httpServletRequest接收引數,用流的方式讀取body } 2、用spring封裝的@RequestBody JSONObject直接獲取http請求中的Body資料,要求 1).http請求中的ContentType必須為applic
fetch獲取json資料
事例: data.json是同目錄的json檔案 fetch('data.json', { method:'GET', mode:'cors',// 避免cors攻擊 credentials: 'include' }).then(functi
Java從網路中請求獲取JSon資料以及解析JSON資料----(自創,請註明)
Json資料是比較常用的資料型別解析,優點就不多說啦。來看看方法: public static JSONObject getJsonObject(String url) { JSONObjec
android從assets中獲取json資料
1.首先是匯入json檔案 [ { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast":
android客戶端從伺服器端獲取json資料並解析的實現程式碼
package com.nuoter.adapterUntil; import java.util.HashMap; import java.util.List; import android.content.Context; import android.graphics.Bitmap;