通过开源框架AsyncHttpClient获取Json数据

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

json简介

Json详细解析可见 http://redarmychen.iteye.com/blog/980243

JSONJavaScript Object Notation的缩写,可见JSON来源于JavaScriptJSON数据是一系列键值对的集合。

下面的代码就是一个JSON
{   
"phone" : ["12345678", "87654321"], // 数组   
"name" : "tianjiefeng", // 字符串   
"age" : 100, // 数值   
"address" : { "country" : "china", "province" : "jiangsu" }, // JSON对象   
"married" : false // 布尔值   

JSON是以key/value的形式存在的,keyStrng类型的,value的类型可以是一个数组,可以是一个字符串,可以是一个数值,也可以是一个布尔值,甚至可以是一个JSON对象

 

我们对json有一定了解之后,接下来,让我们来了解android中对json的解析

同样我们和之前项目类似。采用开源框架来编写程序。

 

解析json数据步骤:

1.引入jar文件

2.添加网络权限

3.创建客户端对象

4.处理get请求,在get请求中newJsonHttpResponseHandler对象

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


相关文章
|
1月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
39 1
|
4天前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较
|
14天前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
16天前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
52 2
|
29天前
|
存储 JSON Go
在Gin框架中优雅地处理HTTP请求体中的JSON数据
在Gin框架中优雅地处理HTTP请求体中的JSON数据
|
1月前
|
JSON JavaScript 数据格式
vue写入json数据到文本中+vue引入cdn的用法
vue写入json数据到文本中+vue引入cdn的用法
50 10
|
6天前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
7天前
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
22 0
|
9天前
|
存储 JavaScript 前端开发
TypeScript :使用mock提供数据&as const 的使用&tsconfig.json配置
本文介绍了如何在项目中使用 Mock 提供数据,包括安装依赖、配置 Vite 和 TypeScript,以及如何使用 `as const`、元组和 tsconfig.json 配置文件。通过这些配置,可以实现更灵活和高效的开发体验。
|
1月前
|
JSON 数据格式
Blob格式转json格式,拿到后端返回的json数据
文章介绍了如何将后端返回的Blob格式数据转换为JSON格式,并处理文件下载和错误提示。
37 0
Blob格式转json格式,拿到后端返回的json数据