- 浏览: 560057 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
1、 生活中,各大公司会提供公共的API供程序访问数据,通过调用API , 一般返回的数据有两种格式:
xml格式;json格式;
2、JSON:
* 概念:是一种轻量级的数据交换格式;采用的是完全独立于语言的文本格式;
3、json数据格式分类:
* key-values 格式; {name:"mike",age : 18}
* 对象格式; {{name:"mike",age : 18},{name:"mike2",age : 19}} 注意:{} 为对象;
* 数组格式:{name:["","",""],age:38} 注意:[] 表示的是数组;
* 数组中包含对象:{students:[{},{}],age:33}
小贴士:万事万物皆对象;
3、将数据以JSON 的格式实现:案例如下
java代码:
xml格式;json格式;
2、JSON:
* 概念:是一种轻量级的数据交换格式;采用的是完全独立于语言的文本格式;
3、json数据格式分类:
* key-values 格式; {name:"mike",age : 18}
* 对象格式; {{name:"mike",age : 18},{name:"mike2",age : 19}} 注意:{} 为对象;
* 数组格式:{name:["","",""],age:38} 注意:[] 表示的是数组;
* 数组中包含对象:{students:[{},{}],age:33}
小贴士:万事万物皆对象;
3、将数据以JSON 的格式实现:案例如下
java代码:
package com.example.json_parse; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EncodingUtils; import org.apache.http.util.EntityUtils; import org.json.JSONArray; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Xml.Encoding; import android.view.View; import android.view.View.OnClickListener; import android.webkit.JsPromptResult; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private Button parseJSON,achieveJSON; private EditText show; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 组件对象 */ parseJSON = (Button) findViewById(R.id.parseJSON); achieveJSON = (Button) findViewById(R.id.achieveJSON); show = (EditText) findViewById(R.id.show); /* 设置事件监听器:将数据用JSON格式表示 */ achieveJSON.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub achieve_JSON(); } }); /* 设置事件监听器:解析JSON */ parseJSON.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub parse_JSON(); } }); } /* 解析JSON格式文本为字符串 */ protected void parse_JSON(){ try{ /* 首先获取服务器返回的JSON文件信息,保存在一个jsp页面中 */ String path ="http://192.168.16.16:8080/index1.jsp"; /* 设置访问方式;并通过IP地址访问服务器 */ HttpGet httpGet = new HttpGet(path); /* 发送请求 */ HttpClient httpClient = new DefaultHttpClient(); HttpResponse httpResponse = httpClient.execute(httpGet); /* 上述请求发送到服务器后会返回请求码,可以用来判断是否请求成功,200代表成功 */ if(httpResponse.getStatusLine().getStatusCode()==200){ Toast.makeText(MainActivity.this, "请求成功!", 1000).show(); HttpEntity httpEntity = httpResponse.getEntity(); /* 获取数据:工具类EntityUtils , 能将得到的数据转换为字符串 */ String info = EntityUtils.toString(httpEntity, "UTF-8"); /* 对字符串操作:将字符串转换为 JSONObject 对象 */ JSONObject person = new JSONObject(info); /**********************************************************************/ /* key==students 的值 */ JSONObject students_value = (JSONObject) person.get("students"); /* key==school的值 */ String school_value = EncodingUtils.getString(person.getString("school").getBytes(),"GBK") ; /**********************************************************************/ /**********************************************************************/ /* 在key==students 的值中,key==c1 的值 *//* key==c2 的值 */ JSONObject students_c1_value = students_value.getJSONObject("c1"); JSONObject students_c2_value = students_value.getJSONObject("c2"); /**********************************************************************/ /**********************************************************************/ /* 在key==students ,key==c1 中,并且:key==class / number /detail */ String c1_class_value = students_c1_value.getString("class"); String c1_number_value = students_c1_value.getString("number"); JSONArray detail_value = students_c1_value.getJSONArray("detail"); /* 处理detail数组中的元素 */ String c1_detail_name_value = ""; String c1_detail_age_value = ""; ArrayList<String> c1_detail_list = new ArrayList<String>(); for(int i=0;i<detail_value.length();i++){ JSONObject detail_value_item = detail_value.getJSONObject(i); c1_detail_name_value = detail_value_item.getString("name"); c1_detail_age_value = detail_value_item.getString("age"); c1_detail_list.add(c1_detail_name_value+" "+c1_detail_age_value); } /**********************************************************************/ /**********************************************************************/ /* key==student ,key==c2中,并且:key=class /number/detail */ String c2_class_value = students_c2_value.getString("class"); String c2_number_value = students_c2_value.getString("number"); JSONArray c2_detail_value = students_c2_value.getJSONArray("detail"); /* 处理detail数组中的元素 */ ArrayList<String> c2_detail_list = new ArrayList<String>(); for(int i=0;i<detail_value.length();i++){ JSONObject detail_value_item = detail_value.getJSONObject(i); String c2_detail_name_value = detail_value_item.getString("name"); String c2_detail_age_value = detail_value_item.getString("age"); c2_detail_list.add(c2_detail_name_value+" "+c2_detail_age_value); } /**********************************************************************/ /* 输出信息 */ for(int i=0;i<c1_detail_list.size();i++){ Toast.makeText(MainActivity.this, c1_class_value+"\n"+c1_number_value+"\n"+c1_detail_list.get(i)+"\n"+school_value, 1000).show(); } for(int i=0;i<c2_detail_list.size();i++){ Toast.makeText(MainActivity.this, c2_class_value+"\n"+c2_number_value+"\n"+c2_detail_list.get(i)+"\n"+school_value, 1000).show(); } }else{ Toast.makeText(MainActivity.this, "服务器访问失败!", 1000).show(); } }catch(Exception ex){ ex.printStackTrace(); Toast.makeText(MainActivity.this, "出现异常了!", 1000).show(); } } /* 将数据以JSON 的格式表示 */ protected void achieve_JSON(){ // { // students: // { // c1:{class:"android1",number:37,detail:[{name:"aa",age:18},{name:"ff",age:19}]}, // c2:{class:"android2",number:38,detail:[{name:"hh",age:16}{name:"kk",age:19}]}, // // }, // school:"国土地信学院" // } try{ /* 对上述的格式表示:从最小的级别进行推导 *//* 按如下导论进行格式转换设置 */ /* detail:[{name:"aa",age:18},{name:"ff",age:19}] */ JSONArray detail_jsonArr = new JSONArray(); /* 数组中的元素1 */ JSONObject detail_json_arr_item = new JSONObject(); detail_json_arr_item.put("name", "aa"); detail_json_arr_item.put("age", 18); /* 数组中的元素2 */ JSONObject detail_json_arr_item2 = new JSONObject(); detail_json_arr_item2.put("name", "ff"); detail_json_arr_item2.put("age", 19); detail_jsonArr.put(detail_json_arr_item); detail_jsonArr.put(detail_json_arr_item2); /* c1:{class:"android1",number:37,detail:[{name:"aa",age:18},{name:"ff",age:19}]} */ JSONObject c1_jsonObject = new JSONObject(); c1_jsonObject.put("class", "android1"); c1_jsonObject.put("number", 37); c1_jsonObject.put("detail", detail_jsonArr); /* detail:[{name:"hh",age:16},{name:"kk",age:19}] */ JSONArray c2_detail_jsonArr = new JSONArray(); /* 数组中的元素1 */ JSONObject c2_detail_json_arr_item = new JSONObject(); c2_detail_json_arr_item.put("name", "bb"); c2_detail_json_arr_item.put("age", 38); /* 数组中的元素2 */ JSONObject c2_detail_json_arr_item2 = new JSONObject(); c2_detail_json_arr_item2.put("name", "cc"); c2_detail_json_arr_item2.put("age", 49); /* 将元素添加到数组 */ c2_detail_jsonArr.put(c2_detail_json_arr_item); c2_detail_jsonArr.put(c2_detail_json_arr_item2); /* c2:{class:"android2",number:38,detail:[{name:"hh",age:16},{name:"kk",age:19}]} */ JSONObject c2_jsonObject = new JSONObject(); c2_jsonObject.put("class", "android2"); c2_jsonObject.put("number", 38); c2_jsonObject.put("detail", c2_detail_jsonArr); /* students:{ c1:{class:"android1",number:37,detail:[{name:"aa",age:18},{name:"ff",age:19}]}, c2:{class:"android2",number:38,detail:[{name:"hh",age:16},{name:"kk",age:19}]}} */ JSONObject students_json = new JSONObject(); students_json.put("c1", c1_jsonObject); students_json.put("c2", c2_jsonObject); /* 所有 */ JSONObject person = new JSONObject(); person.put("students", students_json); person.put("school","湖北国土资源职业学院"); show.setText(person.toString()); }catch(Exception ex){ } } }
发表评论
-
Android 之 网络访问服务器,解析JSON数据
2014-03-28 22:50 3420提示:在访问网络,或者服务器的数据一定要注意 网络权限的声明: ... -
Android 之 AsyncTask 异步任务
2014-03-20 08:44 3524Android ... -
Android 之 Looper Handler Message 之间的关系
2014-03-19 10:16 3671Android 的消息 ... -
Android 之 多线程与Socket联合使用案例
2014-03-19 10:15 2679多线 ... -
Android 之 多线程和Socket套接字的使用介绍
2014-03-19 10:15 4888And ... -
Android 之 实现Runnable 接口与继承Thread的区别
2014-03-19 10:15 2201实现Runnable 接口 相 ... -
Android 之 GSON解析JSON数据
2014-03-19 10:14 4496... -
Android 之 使用Pull 解析xml文件
2014-03-18 21:04 1050/** * 使用Pull进行 xml 文件的解析 ... -
Android 之 使用DOM解析xml文件
2014-03-18 21:02 2747DOM 解析 xml 格式的文件 1、 xml简介:xml ... -
Android 之 百度API 密钥安全码生成
2014-03-04 22:29 2418近期要做个关于旅游助手的应用,开始接触百度API了。大神们 ... -
Android 之 EditText属性用法介绍
2014-01-06 23:49 3995EditText的属性 EditText继承关系:View-- ... -
Android 之 自定义适配器
2014-01-08 10:40 1785自定义适配器 1、实现 * 自定义适配器要继承 BaseA ... -
Android 之 自定义控件用法介绍
2014-01-08 10:40 1721自定义效果:实现:图片和文字混合 首先创建需要组合的子布局: ... -
Android 之 资源自适应与国际化
2014-01-08 10:40 3086<!-- 国际化和资源自适应 ... -
Android 之 Parcelable 序列化
2014-01-08 10:41 2702/* 序列化 * * 作 ... -
Android 之 五大布局案例
2014-01-08 10:41 21361、LinearLayout 线性布局例子: <Lin ... -
Android 之 通知Notification
2014-03-03 22:30 3903Notification 和 NotificationMana ... -
Android 之 手机全屏显示
2014-03-03 22:30 2349/* 1、全屏状态的显示 介绍:Android 中提供了Wi ... -
Android 之 拦截手机短信并自动转发
2014-03-03 22:29 5436拦截短信和发送短信都需要相关的权限: <?xml ve ... -
Android 之 将RAW资源文件写入SD卡工具类
2014-03-01 10:09 3621package com.sun.coptfiletosd; ...
相关推荐
在实际使用中,开发者首先需要在项目中引入android-json-rpc库,可以通过Gradle或Maven依赖管理工具进行添加。然后,初始化`JsonRpcClient`,设置服务器URL和其他配置。接着,创建请求对象,指定方法名和参数,通过`...
在Android中,我们通常使用org.json库来处理JSON。该库提供了两个主要类:JSONObject用于表示JSON对象,JSONArray用于表示JSON数组。以下是如何使用这两个类构建JSON数据的例子: 1. 构建JSON对象: ```java import...
赠送jar包:android-json-0.0.20131108.vaadin1....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
JSON(JavaScript Object Notation)和Gson是Android开发中常用的数据序列化和反序列化工具,...以上就是关于“Android之json和gson数据解析最完整的代码例子”的详细介绍,希望对您在学习和使用JSON及Gson时有所帮助。
该文档完整的讲述了android中json的用法,包括json数据的存储和读取,还有解析json数据等。
本文将深入探讨如何使用JavaScript调用Android的方法,并传递JSON数据,以实现两者之间的高效通信。 首先,我们需要了解`Android WebView`。WebView是Android系统提供的一种组件,它能够加载并显示网页内容,就像是...
本话题主要围绕在Android环境下如何使用JSON,以及"android_json所需jar包"的含义和用途。 首先,"android_json所需jar包"通常指的是用于在Android应用中处理JSON数据的库文件,比如org.json库。这个库提供了解析...
在Android开发中,HttpUrlConnection是用于网络通信的一种基础组件,尤其在处理JSON数据时,它扮演了重要的角色。本文将详细介绍如何使用HttpUrlConnection进行HTTP的POST和GET请求,并处理JSON响应。 首先,理解...
赠送jar包:android-json-0.0.20131108.vaadin1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心
在Android中,我们通常使用`AssetManager`来访问应用的资源文件,包括JSON文件。下面的代码展示了如何读取JSON文件,但可能会导致乱码: ```java public static String readLocalJson(Context context, String ...
这篇文档将详细介绍如何使用按拼音排列和按省市区排列的JSON数据来实现这一功能,并提供相应的使用方法。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...
本教程将深入探讨如何在Android中使用JSON进行数据封装和传输,特别是在Java与C++之间的交互。 ### JSON基础知识 1. **JSON的结构**:JSON基于JavaScript的一个子集,主要由对象(键值对)和数组(有序集合)构成,...
在线JSON解析涉及到网络请求,Android提供了`HttpURLConnection`或`OkHttp`等方法。这里以`HttpURLConnection`为例: ```java URL url = new URL("http://example.com/data.json"); HttpURLConnection connection =...
3. 创建JSON数组:使用`JSONArray`类可以创建JSON数组,如`new JSONArray()`,并使用`put()`方法添加元素。 4. 解析JSON数组:使用`getJSONObject(int index)`或`getString(int index)`等方法遍历和获取数组中的元素...
1. 从字符串解析:Android提供了`org.json`包,可以使用`JSONObject`的`JSONObject(String json)`构造方法将JSON格式的字符串转换为`JSONObject`,同理,可以使用`JSONArray(String json)`来解析JSON数组。...
Android的JSON示例 一、运行环境: 1.服务器端为ASP+Access2003+IIS 2.移动端为Android2.1(大家可根据需要自行调整API Level) 二、主要功能: 1.移动端通过Button将EditText内容提交Request给服务器端 (示例为记录...
这个压缩包"Android应用源码之Android 解析json_dome.zip"提供了关于如何在Android应用中解析JSON的示例代码,对于学习Android开发中的网络数据处理非常有帮助。 首先,我们需要了解JSON的基本结构。JSON基于...
本篇文章将深入探讨Android环境下JSON数据的读写方法。 一、JSON数据格式 JSON数据格式基于JavaScript语法,但独立于语言,具有以下基本结构: 1. 对象(Object):以花括号 `{}` 包裹,键值对以逗号分隔,键(Key...
这个压缩包“android使用JSON进行网络数据交换(服务端、客户端)的实现.rar”很可能是包含了一个完整的示例项目,展示如何在Android客户端与服务器之间通过JSON进行数据交互。下面我们将详细讲解这一过程中的关键知识...
5. 数据解码:Android应用接收到响应后,使用`org.json`库的`JSONObject`或`JSONArray`解析JSON响应,提取出所需信息。 6. 显示或处理:将解析出来的数据展示在UI上,或者进行进一步的业务处理。 在实际开发中,...