通过开源框架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主要代码:代码中有详细注释,请认真观看

  1. package com.example.android_json;  
  2.   
  3. import org.apache.http.Header;  
  4. import org.json.JSONArray;  
  5. import org.json.JSONException;  
  6. import org.json.JSONObject;  
  7.   
  8. import com.loopj.android.http.AsyncHttpClient;  
  9. import com.loopj.android.http.JsonHttpResponseHandler;  
  10.   
  11. import android.os.Bundle;  
  12. import android.app.Activity;  
  13. import android.view.Menu;  
  14. import android.widget.Toast;  
  15.   
  16. public class MainActivity extends Activity {  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.         // http://172.16.237.200:8080/video/JsonServlet  
  23.         initData();  
  24.     }  
  25.   
  26.     private void initData() {  
  27.         // 创建客户端对象  
  28.         AsyncHttpClient client = new AsyncHttpClient();  
  29.         String url = "http://172.16.237.200:8080/video/JsonServlet";  
  30.         Toast.makeText(this, "发送请求到服务器", 0).show();  
  31.         client.get(url, new JsonHttpResponseHandler() {  
  32.               
  33.             //返回JSONObject对象|JSONOArray对象  
  34.             @Override  
  35.             public void onSuccess(int statusCode, Header[] headers,  
  36.                     JSONArray response) {  
  37.                 // TODO Auto-generated method stub  
  38.                 super.onSuccess(statusCode, headers, response);  
  39.   
  40.                 if (statusCode == 200) {  
  41.                     //遍历json数组  
  42.                     for (int i = 0; i < response.length(); i++) {  
  43.                         try {  
  44.                             // 获取具体的一个JSONObject对象  
  45.                             JSONObject obj = response.getJSONObject(i);  
  46.                             //JSONObject对象get(“属性名”),getString(“属性名”),getInt(“属性名”)等方法来获取指定属性名的值  
  47.                             System.out.println("序号" + obj.getString("id")  
  48.                                     + "--------姓名:" + obj.getString("name")  
  49.                                     + "--------密码:" + obj.getString("pass")  
  50.                             + "--------其他:" + obj.getString("pass"));  
  51.                         } catch (JSONException e) {  
  52.                             // TODO Auto-generated catch block  
  53.                             e.printStackTrace();  
  54.                         }  
  55.                     }  
  56.                 }  
  57.             }  
  58.         });  
  59.     }  
  60.   
  61. }  

 

在控制台输出结果:

 

 

常见错误锦籍:

一、当遍历json数组是,若没有对于json数据就会报错

例如:

  1. //遍历json数组  
  2. for (int i = 0; i < response.length(); i++) {  
  3.     try {  
  4.         // 获取具体的一个JSONObject对象  
  5.         JSONObject obj = response.getJSONObject(i);  
  6.         //JSONObject对象get(“属性名”),getString(“属性名”),getInt(“属性名”)等方法来获取指定属性名的值  
  7.         System.out.println("序号" + obj.getString("id")  
  8.                 + "--------姓名:" + obj.getString("name")  
  9.                 + "--------性别:" + obj.getString("sex")  
  10.                 + "--------密码:" + obj.getString("pass"));  
  11.     } catch (JSONException e) {  
  12.         // TODO Auto-generated catch block  
  13.         e.printStackTrace();  
  14.     }  
  15. }  

运行效果如下

 

解析:json文件中没有sex字段,若我 们在程序中写入则会报如上错误,所有在编写程序的时候应多加注意字段的对应。

 

 

开源框架资源:http://download.csdn.net/detail/zhaoyazhi2129/7400787

源码:http://download.csdn.net/detail/zhaoyazhi2129/7400807

时间: 2024-11-20 20:26:15

通过开源框架AsyncHttpClient获取Json数据的相关文章

AJAX跨域请求之JSONP获取JSON数据_AJAX相关

Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该

AJAX跨域请求JSONP获取JSON数据的实例代码

Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该方法

php获取json数据所有的节点路径

  之前我们讲解过使用javascript获取json数据节点路径的问题,今天我们更进一步,讲解下php获取json数据所有的节点路径 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 <?php   function iterTree($data) { $retData = array();

jquery的ajax和getJson跨域获取json数据的实现方法

 本篇文章主要是对jquery的ajax和getJson跨域获取json数据的实现方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了.近日在进行开 发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多不占用服务器的资源,遂决定直接在html进行数据的读取,不走服务器端进行中转了.然后 正好就遇到了浏览器端跨域访问的问题.   跨域的安全限制都是指浏览器端

json操作-怎么获取json数据及操作

问题描述 怎么获取json数据及操作 var PacsData = [ { "Path": ["F:1231debugData979372PACS100126725274152DX_e3b0eb90f7fdf110052b16bfb046a76363ee787eb18278c105de27bc786cbc9a5667f7507dde0a9b5ad0097523b20b48_007332_000001.dcm.icon.jpg", "F:1231debugD

dojo从asp.net中获取json数据

搞来有搞去终于有了个结果,主要是一开始犯了一些低级错误. 对于json不太了解的童鞋,可以看看这个:http://www.dreamdu.com/blog/2008/10/19/json_in_javascript/ 这个例子中主要是从数据库中读取数据,转换成JSON格式,传递给前端,废话少说上代码: protected void Page_Load(object sender, EventArgs e) { string b = Request["callback"]; string

jQuery异步获取json数据方法汇总_jquery

jQuery异步获取json数据有2种方式,一个是$.getJSON方法,一个是$.ajax方法.本篇体验使用这2种方式异步获取json数据,然后追加到页面. 在根目录下创建data.json文件: 复制代码 代码如下: {     "one" : "Hello",     "two" : "World" } ■ 通过$.getJSON方法获取json数据 复制代码 代码如下:     <script src="

struts 2-问题:利用struts自带的json机制,期望从后台获取json数据失败,求帮助

问题描述 问题:利用struts自带的json机制,期望从后台获取json数据失败,求帮助 问题:利用struts自带的json机制,期望从后台获取json数据失败,求帮助 ############################################################## struts 2.3.20 struts.xml <package name="json" extends="json-default" namespace=&qu

Android 链接服务器获取json数据,解析头像url后。。。

问题描述 Android 链接服务器获取json数据,解析头像url后... Android 刚进入页面,链接服务器获取json数据,解析图片url,然后联网加载头像图片的操作得不到头像.代码如下.向各位请教.新手,不知道哪里出问题了.JsonObjectRequest request=new JsonObjectRequest(Request.Method.POST url null new Listener() { @Override public void onResponse(JSONO