当前位置:文档之家› android使用JSON进行网络数据交换

android使用JSON进行网络数据交换

android使用JSON进行网络数据交换
android使用JSON进行网络数据交换

使用JSON进行网络数据交换

标签:

在开发客户端与服务端的应用当中,数据交换接口通常都是通过XML格式来进行数据交换的。近年来,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,也越来越多的被使用到各个项目中。在Android SDK中,也提供了JSON的类库方便对JSON格式的数据进行处理。本文将快速讲解JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行JSON 格式数据的处理。

什么是JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。

和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。

String,Number 和Boolean 用JSON 表示非常简单。例如,用JSON 表示一个简单的字符串“ abc ”,其格式为:"abc"。

除了字符",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他Unicode 字符可以直接输出。下图是一个String 的完整表示结构:

图1.String的完整表示结构一个Number 可以根据整型或浮点数表示如下:

这与绝大多数编程语言的表示方法一致,例如:

12345(整数)

-3.9e10(浮点数)

Boolean 类型表示为true 或false 。此外,JavaScript 中的null 被表示为null,注意,true、false 和null 都没有双引号,否则将被视为一个String 。

JSON 还可以表示一个数组对象,使用[] 包含所有元素,每个元素用逗号分隔,元素可以是任意的Value,例如,以下数组包含了一个String,Number,Boolean 和一个null:

view plaincopy to clipboardprint?

1.["abc",12345,false,null]

Object 对象在JSON 中是用{} 包含一系列无序的Key-Value 键值对表示的,实际上此处的Object 相当于Java 中的Map,而不是Java 的Class 。注意Key 只能用String 表示。例如,一个Address 对象包含如下Key-Value:

city:Beijing

street:Chaoyang Road

postcode:100025(整数)

用JSON 表示如下:

view plaincopy to clipboardprint?

1.{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}

其中Value 也可以是另一个Object 或者数组,因此,复杂的Object 可以嵌套表示,例如,一个Person 对象包含name 和address 对象,可以表示如下:

view plaincopy to clipboardprint?

1.{"name":"Michael","address":

2. {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}

3.}

一个实际例子

接下来,我会通过一个例子来详细说明Android客户端程序如何访问服务端的接口程序读取用户列表数据,并在模拟器上显示用户列表数据。

1、服务端接口程序

首先,我们创建一个名为User的JavaBean作为用户对象类,用来保存演示数据。

view plaincopy to clipboardprint?

1.public class User {

2.private int id;

3.private String name;

4.private String email;

5.private String gender;

6.

7.public int getId() {

8.return id;

9. }

10.public void setId(int id) {

11.this.id = id;

12. }

13.public String getName() {

14.return name;

15. }

16.public void setName(String name) {

https://www.doczj.com/doc/37442376.html, = name;

18. }

19.public String getEmail() {

20.return email;

21. }

22.public void setEmail(String email) {

23.this.email = email;

24. }

25.public String getGender() {

26.return gender;

27. }

28.public void setGender(String gender) {

29.this.gender = gender;

30. }

31.

32.}

接下来,我们创建一个名为JSONDemoServlet的Servlet类来作为服务端的接口程序。在这个程序里,定义了一个List对象用来保存用户列表。

view plaincopy to clipboardprint?

1.private List list;

客户端程序访问服务器端接口时,接口通过prepareData方法为用户列表初始化数据,添加用户数据到List对象中。

view plaincopy to clipboardprint?

1.private void prepareData(){

2. list = new ArrayList();

3. User bean1 = new User();

4. bean1.setId(1001);

5. bean1.setName("Tony");

6. bean1.setEmail("tony@https://www.doczj.com/doc/37442376.html,");

7. bean1.setGender("male");

8. list.add(bean1);

9.……

10. }

接着遍历用户列表,把列表中的每个Java用户对象转换为JSONObject对象,再加入到JSONArray 中去。

view plaincopy to clipboardprint?

1.JSONArray array = new JSONArray();

2.for(User bean:list){

3.//单个用户JSON对象

4. JSONObject obj = new JSONObject();

5.

6.try{

7. obj.put("id", bean.getId());

8. obj.put("name", bean.getName());

9. obj.put("email", bean.getEmail());

10. obj.put("gender", bean.getGender());

11. } catch (Exception e) {}

12.

13. array.put(obj);

14. }

最后,通过Servlet输出JSON 时,需要设置正确的MIME 类型和字符编码。假定服务器使用UTF-8 编码,则可以使用以下代码输出编码后的JSON 文本:

view plaincopy to clipboardprint?

1.response.setContentType("text/plain");

2. response.setCharacterEncoding("UTF-8");

3. PrintWriter out = response.getWriter();

4.out.write(array.toString());

5. out.flush();

6. out.close();

7.

8.JSONDemoServlet.java的完整代码如下:

9.import java.io.IOException;

10.import java.io.PrintWriter;

11.import java.util.ArrayList;

12.import java.util.List;

13.

14.import javax.servlet.ServletException;

15.import javax.servlet.http.HttpServlet;

16.import javax.servlet.http.HttpServletRequest;

17.import javax.servlet.http.HttpServletResponse;

18.

19.import org.json.JSONArray;

20.import org.json.JSONObject;

21.

22.public class JSONDemoServlet extends HttpServlet{

23.private static final long serialVersionUID = -7368225680407826

408L;

24.private List list;

25.

26./**

27. * 处理post方式提交的数据

28. */

29.public void doPost(HttpServletRequest request, HttpServletRespon

se response)throws ServletException, IOException {

30. doGet(request,response);

31. }

32./**

33. * 出来get方式提交的数据

34. */

35.public void doGet(HttpServletRequest request, HttpServletResp

onse response) throws ServletException, IOException {

36. response.setContentType("text/plain");

37. response.setCharacterEncoding("UTF-8");

38. PrintWriter out = response.getWriter();

39.

40.//准备用户数据

41. prepareData();

42.

43.//JSON数组

44. JSONArray array = new JSONArray();

45.for(User bean:list){

46.//单个用户JSON对象

47. JSONObject obj = new JSONObject();

48.

49.try{

50. obj.put("id", bean.getId());

51. obj.put("name", bean.getName());

52. obj.put("email", bean.getEmail());

53. obj.put("gender", bean.getGender());

54. } catch (Exception e) {}

55.

56. array.put(obj);

57. }

58.

59.//输出

60. out.write(array.toString());

61. out.flush();

62. out.close();

63. }

64.private void prepareData(){

65. list = new ArrayList();

66. User bean1 = new User();

67. bean1.setId(1001);

68. bean1.setName("Tony");

69. bean1.setEmail("tony@https://www.doczj.com/doc/37442376.html,");

70. bean1.setGender("male");

71. list.add(bean1);

72.

73. User bean2 = new User();

74. bean2.setId(1002);

75. bean2.setName("Jack");

76. bean2.setEmail("jack@https://www.doczj.com/doc/37442376.html,");

77. bean2.setGender("male");

78. list.add(bean2);

79.

80. User bean3 = new User();

81. bean3.setId(1003);

82. bean3.setName("Marry");

83. bean3.setEmail("marry@https://www.doczj.com/doc/37442376.html,");

84. bean3.setGender("female");

85. list.add(bean3);

86.

87. User bean4 = new User();

88. bean4.setId(1004);

89. bean4.setName("Linda");

90. bean4.setEmail("linda@https://www.doczj.com/doc/37442376.html,");

91. bean4.setGender("female");

92. list.add(bean4);

93. }

94.}

2.

3. android:orientation="vertical"

4. android:layout_width="fill_parent"

5. android:layout_height="fill_parent">

6.

7. android:layout_width="fill_parent"

8. android:layout_height="fill_parent"/>

9.

Android SDK提供了Apache的HttpClient类处理网络访问,相信很多读者朋友都在其他项目当中用到过HttpClient。我写了一个方法,获取某一网址的网页内容,代码如下:

view plaincopy to clipboardprint?

1./**

2. * 获取网址内容

3. * @param url

4. * @return

5. * @throws Exception

6. */

7.private String getContent(String url) throws Exception{

8. StringBuilder sb = new StringBuilder();

9.

10. HttpClient client = new DefaultHttpClient();

11. HttpParams httpParams = client.getParams();

12.//设置网络超时参数

13. HttpConnectionParams.setConnectionTimeout(httpParams, 3000);

14. HttpConnectionParams.setSoTimeout(httpParams, 5000);

15. HttpResponse response = client.execute(new HttpGet(url));

16. HttpEntity entity = response.getEntity();

17.if (entity != null) {

18. BufferedReader reader = new BufferedReader(new InputStrea

mReader(entity.getContent(), "UTF-8"), 8192);

19.

20. String line = null;

21.while ((line = reader.readLine())!= null){

22. sb.append(line + "\n");

23. }

24. reader.close();

25. }

26.return sb.toString();

27.}

修改MainActivity.java,在onCreate方法里增加解析服务端接口内容的代码,如下所示:

view plaincopy to clipboardprint?

1.@Override

2.public void onCreate(Bundle savedInstanceState) {

3.super.onCreate(savedInstanceState);

4. setContentView(https://www.doczj.com/doc/37442376.html,yout.main);

5.

6.try{

7. StringBuffer sb = new StringBuffer();

8.//在测试过程中,经常是用本机做测试服务器,访问本机的IP地址要设置为

10.0.2.2

9. String url = "http://10.0.2.2:8080/article/JSONDemoServlet";

10. String body = getContent(url);

11. JSONArray array = new JSONArray(body);

12.for(int i=0; i

13. JSONObject obj = array.getJSONObject(i);

14. sb.append("id:").append(obj.getInt("id")).append("\t");

15. sb.append("name:").append(obj.getString("name")).append("

\r\n");

16. sb.append("gender:").append(obj.getString("gender")).appen

d("\t");

17. sb.append("email:").append(obj.getString("email")).append("

\r\n");

18. sb.append("----------------------\r\n");

19. }

20. TextView textView = (TextView)findViewById(R.id.textView);

21. textView.setText(sb.toString());

22. }catch(Exception e){}

23.}

运行后的界面如下图:

图4.运行界面

总结

本文简单介绍了JSON的相关知识,以及在Android平台中如何通过JSON来和服务端的应用进行数据交换。

作者介绍

万云,广州盈哲计算机科技有限公司技术总监。拥有10年以上的软件开发经验,擅长J2EE、大型网站、移动增值服务等领域的技术开发。

Android利用Gson实现对象和Json数据的相互转换

Android利用Gson实现对象和Json数据的相互转换 MainActitity如下: package cc.test; import android.app.Activity; import android.os.Bundle; /** * Demo描述: * 利用Gson实现对象和Json数据的相互转换 * * Demo描述: * 通过一个网络请求,获取JSON数据 * * 注意: * 1 网络请求的参数是JSON格式的数据 * 2 请求结果返回的亦是JSON格式的数据 * */ public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.doczj.com/doc/37442376.html,yout.main); init(); } private void init(){ new Thread(){ public void run(){ GetJsonDataByPost httpJsonPost=new GetJsonDataByPost(); String[] pathArray=httpJsonPost.getPathArray("dev0003"); for(int i=0;i

[Android开发] Json解析工具类,一个类搞定Json的解析

[Android开发] Json解析工具类,一个 类搞定Json的解析 一、简介 利用递归的方式反射解析到bean里面 二、详细代码 1、Json格式 例如服务器指定规定json格式为: { "code": "……" , // 返回代号,预留字段,默认返回null "type":"ERROR", // 返回类型,表示操作是成功或失败 "desc":"……", // 返回描述,描述性文字,主要保存用于弹窗显示的文字 "action":"SHOW", //返回操作,该操作值提供给终端使用,用于决定当前收到返回后的操作 "data": "……" // 返回数据,根据请求上传的参数,返回对应的数据,或返回null } 对应的数据在data里面,data里面的key对应一个bean,例如一个列表数据: { "desc":"查询成功", "data":{ "diseaseList":[ { "xmlName":"精神病评估", "xmlId":"1066", "category":"symptom" }, { "xmlName":"对学习困难和认知延迟的评估", "xmlId":"884", "category":"symptom" }, { "xmlName":"疲乏的评估", "xmlId":"571", "category":"symptom"

}, { "xmlName":"痴呆的评估", "xmlId":"242", "category":"symptom" }, { "xmlName":"非故意性体重减轻评估", "xmlId":"548", "category":"symptom" } ] }, "action":null, "code":"", "type":"SUCCESS" } 2、定义数据Bean类 上面的list的bean定义为DiseaseList.Java public class DiseaseList { /** * xmlName : 分裂情感性障碍 * xmlId : 1199 * category : disease */ private String xmlName; //症状名字 private String xmlId; //症状名字 private String category; //分类的英文名 private String letter = ""; //字母,转为拼音后在这里添加 public String getXmlName() { return xmlName; } public void setXmlName(String xmlName) { this.xmlName = xmlName; }

Android中JSON详细总结

Android中JSON详细总结 1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其 提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。– https://www.doczj.com/doc/37442376.html, 2、JSON的结构: (1) Name/Value Pairs(无序的):类似所熟知的Keyed list、 Hash table、Disctionary和Associative array。在Android平台中同时存在另外一个类 "Bundle",某种程度上具有相似的行为。 (2) Array(有序的):一组有序的数据列表。 对象 对象是一个无序的Name/Value Pairs集合。{name:value , name:value , name:value .... } 例子:{ "name":"小猪","age":20 } Array Array是值(value)的有序集合。[ value , value , value ...... ] 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。例如:\ + " \ / b f n r t u 进行转义。

android程序经典架构

Android 程序框架设计 1、主要说明 框架说明: 1 基于HTTP 协议进行通信 2 利用json 格式传输数据。 客户端以POST 方式用UTF-8编码提交网络请求,主要模块有通用framework,view 视图,业务逻辑(系统调度)模块,本地数据处理模块,http 模块,工具类。http 请求解析,传输到业务处理模块,然后本地处理数据模块进行文件保存,若展示则 通过业务处理模块,最终在view 视图上显示。 2、设计细项 2.1 共通类的设计 概念完整性: 1 2 3 4 5 - 开发过程中,需求、设计、编码的一致性 - 整个程序具有统一的风格,比如对话框样式,按钮风格,色调等UI 元素 - 整个程序具体统一的结构,比如不同模块访问网络,它们的调用方式一致,例如异步访问都用回调方式通知结果,相同的功能应该提取成共通模块。 - 开发人员能很好的执行需求人员和设计人员的意图。 - 有完整的文档,需求文档,设计文档,测试文档,处理流程的文档等。 2.1.1 Widget 设计 尽量在style 文件中定义样式。 TextView EditText Button Title bar Tool bar … ### 为什么要提供这些共通控件? ### 统一字体大小,如App 字体不随系统字体变化而变化 统一UI 式样,如Button , EditText 具有相同的背景等 复用代码

2.1.2 Adapter Items 根据式样,提取需要在AdapterView 中显示的Item 简单的复合布局 自绘制,从而提高滑动性能 - ListView 中放Gallery 时,提高上下滑动性能 - 尽量优化绘制 ### 数据驱动 ### Adapter Items 提供核心的方法 - setData(Object data) - getData(); Adapter#getView 实现更加简单 - 实现简单 - 不会因为UI 变化而变化 下面代码示例了Adapter#getView()方法的实现,它返回BookView ,BookView 提供方法来接收数据,至于BookView 的显示,则根据设置的数据来显示,这就是数据驱动UI 。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Override public View getView(int position, View convertView, ViewGroup parent) { if (null == convertView) { convertView = new BookView(getContext()); convertView.setLayoutParameter(new https://www.doczj.com/doc/37442376.html,youtParameter(150, 150)); } Book book = m_bookList.get(position); BookView bookView = (BookView)convertView; bookView.setBook(book); return convertView; } 2.1.3 Dialog 扩展于Dialog 类 提供Dialog 关闭的事件 Dialog 的高度随内容的变化而变化 可以设置按钮的文字,可见性,字体等方法

Android手机客户端和服务器交互开发实例

本文介绍了如何使用Android搭建客户端,实现手机和服务器的交互。让我们了解如何采用SSH框架,把服务器端的信息用JSON的形式发送到手机端。 AD:笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。 首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码: 首先,在服务器端搭建好SSH框架,具体细节就不在陈述。struts.xml配置如下: 1. 2. 3.result 4. 5. 6. 7. 8. 9. result 10. 11. 手机端的代码如下: 首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的: 1.packagecom.jclick.cache; 2. https://www.doczj.com/doc/37442376.html,er; 4. 5.publicclassCache{ 6. 7.privateUserUser; 8. 9.privateCache(){ 10. 11.} 12./**构造单例*/ 13.Private static class CacheHolder{ 14.Private static final CacheINSTANCE=newCache(); 15.} 16.Public Cache getInstance(){ 17.returnCacheHolder.INSTANCE; 18.} 19.publicUsergetUser(){

androidjson解析及简单例子(转载).

JSON 的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持,从而可以在不同平台间进行数据交换。 JSON 采用兼容性很高的文本格式,同时也具备类似于 C 语言体系的行为。– https://www.doczj.com/doc/37442376.html, JSON Vs XML 1.JSON 和 XML 的数据可读性基本相同 2.JSON 和 XML 同样拥有丰富的解析手段 3.JSON 相对于 XML 来讲,数据的体积小 4.JSON 与 JavaScript 的交互更加方便 5.JSON 对数据的描述性比 XML 较差 6.JSON 的速度要远远快于 XML android2.3提供的 json 解析类 android 的 json 解析部分都在包 org.json 下,主要有以下几个类: JSONObject :可以看作是一个 json 对象 , 这是系统中有关 JSON 定义的基本单元, 其包含一对儿 (Key/Value数值。它对外部 (External:应用 toString(方法输出的数值调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的 Key 和 Value 被冒号 ":"分隔。其对于内部 (Internal行为的操作格式略微,例如:初始化一个 JSONObject 实例,引用内部的 put(方法添加数值:new JSONObject(.put("JSON", "Hello, World!", 在 Key 和 Value 之间是以逗号 "," 分隔。Value 的类型包括:Boolean 、 JSONArray 、 JSONObject 、 Number 、 String 或者默认值 JSONObject.NULL object 。

Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析

Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析 Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析 在开发客户端与服务端的应用当中,数据交换接口通常都是通过XML格式来进行数据交换的。近年来,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,也越来越多的被使用到各个项目中。在OPhone SDK中,也提供了JSON 的类库方便对JSON格式的数据进行处理。本文将快速讲解JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行JSON 格式数据的处理。 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。 和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 String,Number 和Boolean 用JSON 表示非常简单。例如,用JSON 表示一个简单的字符串“ abc ”,其格式为:"abc"。 除了字符",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他Unicode 字符可以直接输出。下图是一个String 的完整表示结构: 图1.String的完整表示结构 一个Number 可以根据整型或浮点数表示如下: 图2.Number 的表示结构 这与绝大多数编程语言的表示方法一致,例如: 12345(整数) -3.9e10(浮点数)

Android移动终端开发大作业

Android移动终端开发大作业 一、作业要求 ●1人一组,独立完成。 ●按照个人兴趣方向,自选题目,完成系统。 ●在规定的时间里完成系统主体功能,程序比较稳定的运行。 ●手机界面要求简洁、美观,功能不能过于简单,应具备一定的实用性。 ●至少要3个Activity以上。 ●必须使用自定义Listview,要使用Sqlite数据库或API调用与数据解析(API 可使用聚合数据(https://https://www.doczj.com/doc/37442376.html,/)、API Store(https://www.doczj.com/doc/37442376.html,/)或apix(https://www.doczj.com/doc/37442376.html,/)提供的API,如有能力也可自行开发服务器端)。 ●欢迎好的创意作品、实用作品,评分时会适当加分。 ●需提交设计报告,设计报告格式见附件,按附件顺序装订(包括评分表) ●大作业成绩从工作量、功能点、创新性、实用性、报告的字数、质量及规范 度等方面的成绩构成 二、注意事项 ●压缩包内作业内容包括两部分: ①作业项目文件夹,项目必须能够调试通过,android平台选择选择2.2或是2.3.3。 ②作业设计说明,word文件。 ●可以借鉴网络上的代码,但不可全部照搬。 不许相互抄袭,一旦发现成绩为零。 Android平台移动应用开发 大作业 基于Android的新闻浏览软件的设计与 题目 实现

学院信息工程学院 专业信息工程 班级信息1303 姓名杏允升 指导教师秦珀石 2015 年12 月10 日 一、 ................................................................................................................. 错误!未定义书签。 二、概述 (3) 三、关键技术 (4) 四、概要设计 (8) 五、系统实现 (9) 六、心得体会.................................................................................................. 错误!未定义书签。

android使用JSON进行网络数据交换

使用JSON进行网络数据交换 网络编程, 2009-12-18 17:29:44 标签: 在开发客户端与服务端的应用当中,数据交换接口通常都是通过XML格式来进行数据交换的。近年来,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,也越来越多的被使用到各个项目中。在Android SDK中,也提供了JSON的类库方便对JSON格式的数据进行处理。本文将快速讲解JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行JSON 格式数据的处理。 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。 和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 String,Number 和Boolean 用JSON 表示非常简单。例如,用JSON 表示一个简单的字符串“ abc ”,其格式为:"abc"。 除了字符",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他Unicode 字符可以直接输出。下图是一个String 的完整表示结构:

图1.String的完整表示结构一个Number 可以根据整型或浮点数表示如下:

不错的 [置顶]Android中的JSON详细总结

[置顶]Android中的JSON详细总结 分类:Android数据解析2011-04-04 14:43 701人阅读评论(1) 收藏举报1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。– https://www.doczj.com/doc/37442376.html, 2、JSON的结构: (1) Name/Value Pairs(无序的):类似所熟知的Keyed list、Hash table、Disctionary和Associative array。 在Android平台中同时存在另外一个类"Bundle",某种程度上具有相似的行为。 (2) Array(有序的):一组有序的数据列表。 对象 对象是一个无序的Name/Value Pairs集合。{ name:value , name:value , name:value .... } 例子:{ "name":"小猪","age":20 } Array Array是值(value)的有序集合。[ value , value , value ...... ] 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。例如:/ + " / / b f n r t u 进行转义。

android和服务器的代码+步骤详细

Android JSON网络数据交换 2011-10-30 13:33:33 我来说两句 收藏我要投稿 [字体:小大] 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。 和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 首先创建一个Web项目ServletTest 1:我们创建一个名为User的JavaBean作为用户对象类,用来保存演示数据 2:我们创建一个ServletDemo的Servlet类作为服务器的接口程序

3:把该Servlet部署到Tomcat下,发布项目需要修改web.xml 4:发布成功后,在浏览器输入地址http://localhost:8080/ServletTest/Test,输出如下结果: 5:准备好服务器的接口后,我们准备写客户端的程序,创建一个android项目 我们创建一个名为JSONActivity的Activity类 首先我们修改UI布局layout/main.xml 6:实现客户端获取网络数据的核心代码:

因为要访问外部网络,所以要子啊AndroidManifest.xml文件里增加一行安全许可:

Android中的JSON详细总结1

1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。– https://www.doczj.com/doc/37442376.html, 2、JSON的结构: (1) Name/Value Pairs(无序的):类似所熟知的Keyed list、 Hash table、Disctionary和Associative array。在Android平台中同时存在另外一个类 "Bundle",某种程度上具有相似的行为。 (2) Array(有序的):一组有序的数据列表。 对象 对象是一个无序的Name/Value Pairs集合。{name:value , name:value , name:value .... } 例子:{ "name":"小猪","age":20 } Array Array是值(value)的有序集合。[ value , value , value ...... ]

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。例如:\ + " \ / b f n r t u 进行转义。 例子1: Array里面包含对象(object) [ {"id":1,"name":"小猪" ,"age”:22} , {"id":2,"name":"小猫","age”:23} , .......] 例子2:同样对象(object)中可以包含Array (1)一个对象包含1个数组,2个子对象 {"root":[{"id":"001","name":"小猪"},{"id":"002","name":"小猫"},{"id":"003","name":"小狗"}], "total":3, "success":true } (2)也可以对象嵌套子对象,子对象再嵌套数组 {"calendar": {"calendarlist": [ {"id":"001","name":"小猪"}, {"id":"002","name":"小猫"} ] } }

使用JSON进行网络数据交换传输 详细

使用JSON进行网络数据交换- Android 2011年05月11日星期三15:04 在开发客户端与服务端的应用当中,数据交换接口通常都是通过XML格式来进行数据交换的。近年来,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,也越来越多的被使用到各个项目中。在OPhoneSDK中,也提供了JSON 的类库方便对JSON格式的数据进行处理。本文将快速讲解JSON格式,并通过代码示例演示如何分别在客户端和服务器端进行JSON 格式数据的处理。 什么是JSON JSON(JavaScript ObjectNotation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,非常适合于服务器与客户端的交互。JSON采用与编程语言无关的文本格式,但是也使用了类C语言的习惯,这些特性使JSON成为理想的数据交换格式。和XML 一样,JSON 也是基于纯文本的数据格式。由于JSON 天生是为JavaScript 准备的,因此,JSON的数据格式非常简单,您可以用JSON 传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。 String,Number 和Boolean 用JSON 表示非常简单。例如,用JSON 表示一个简单的字符串“ abc ”,其格式为:"abc"。 除了字符",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他Unicode 字符可以直接输出。下图是一个String 的完整表示结构: 图1.String的完整表示结构 一个Number 可以根据整型或浮点数表示如下:

Android下使用JSON实现HTTP请求

Android下使用JSON实现HTTP请求最近在用Android调用Web服务,开始准备用WebService来调用,用jws的WebService方式写好后发现Android调用的时候很多问题不知道咋解决了,后来 发现有一个更好的办法,就是采用HttpPost来与后台交互。 下面就说一下相关的JSON的操作: 不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作在Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便 以下就是一个标准的 JSON 请求的实现过程: HttpPost request = newHttpPost(url); // 先封装一个 JSON 对象 JSONObject param = newJSONObject(); param.put("name", "rarnu"); param.put("password", "123456"); // 绑定到请求 Entry StringEntity se = newStringEntity(param.toString()); request.setEntity(se); // 发送请求 HttpResponse httpResponse = newDefaultHttpClient().execute(request); // 得到应答的字符串,这也是一个 JSON 格式保存的数据 String retSrc = EntityUtils.toString(httpResponse.getEntity()); // 生成 JSON 对象 JSONObject result = newJSONObject( retSrc);

安卓与web服务端数据交互的接口定义文档

Table of Contents 目录 1简介 (3) 2终端与系统平台接口简略图 (3) 2.1终端与系统平台接口描述图 (3) 3WEBServer与DBDao接口(API-2接口) (3) 4PAD与WEB Server平台接口(API-1接口) (3) 4.1API-1接口描述 (3) 4.2用户登录 (4) 4.3首页------获得推荐的模块图片 (5) 4.4物业---公告板---分页获得(大家/个人)公告 (5) 4.5物业---公告板---获得一个公告 (6) 4.6物业---公告板---发布公告 (6) 4.7物业---公告板---编辑公告 (7) 4.8物业---通知—分页获得新通知 (7) 4.9物业---通知—获得一条通知 (8) 4.10物业---账单—获得某年某月的账单 (8) 4.11商城---商品中心--获得商品类别(大类别/子类别) (9) 4.12商城---商品中心--获得商品列表 (10) 4.13商城---商品中心--获得多个/单个推荐商品 (11) 4.14商城---商品中心--获得单个商品详细 (12) 4.15商城---商品中心--添加订单 (13) 4.16商城---我的账户—获得最近的一条账单和账单详情 (13) 4.17商城---我的账户—获得消费信息 (14) 4.18商城---我的账户- -生成商品类型的报表 (14) 4.19商城---我的账户- -生成年度每个月消费情况的报表 (15)

1 简介 本文档旨在对终端与系统平台接口技术规范进行说明,用于指导开发人员进行相关业务的开发。 2 终端与系统平台接口简略图 2.1 终端与系统平台接口描述图 PAD(Terminal)与系统平台有以下接口: ●与Web平台的接口(API-1) WEB(Server)与系统平台有以下接口: ●与DBDao的接口(API-2) 3 WEBServer与DBDao接口(API-2接口) 通过DBDao接口对DB进行操作 4 PAD与WEB Server平台接口(API-1接口) 4.1 API-1接口描述 PAD与WEB Server平台之间具有以下接口模块: (1).用户登录接口 (2).首页信息实时更新接口 (3).物业-公告板接口 (4).物业-通知接口 (5).物业-管家接口 (6).物业-账单接口 (7).用户登出接口 (8).商城-主页接口 (9).商城-推荐商品接口 (10).商城-添加订单接口 (11).商城-支付接口 (12).娱乐-推荐电影海报接口 . . . . . .

Android100道选择题

Android 四大组件选择题 选择题 1.下面不是Android四大组件之一的(B ) A. Activity B.Intent C. Service D. ContentProvider 2. 下面关于广播叙述错误的是(A) A. 广播是Android四大组件之一 B. BroadcastReceiver有两种注册方式,静态注册和动态注册 C. 静态注册需要在Mainfest.xml中配置 D. 动态注册需要在应用退出时候接触广播的注册。 3. 下面关于BroadcastReceiver错误的是(B): A. BroadcastReceiver有两种注册方式,静态注册和动态注册。 B. BroadcastReceiver必须在AndroidMainfest文件中声明 C. BroadcastReceiver的使用,一定有一方发送广播,有一方监听注册广播,onReceive方法才会被调用。 D. 广播发送的Intent都是隐式启动。 4. 下面关于谁先接收广播顺序错误的是(B) A. 有序广播,优先级高的先接收 B. 有序广播,同优先级的动静态广播接收器,静态优先于动态。 C. 有序广播,同优先级的动态广播接收器,先注册的大于后注册的。 D. 普通广播时,无视优先级,动态广播接收器优先于静态广播接收器 5. 下面关于广播说法错误的是(B) A. 广播分为有序广播和无序广播 B. 使用abortBroadcast方法可以中断所有广播的传递。 C. 广播注册方式分为动态和静态 D. sendOrderBroadcast用来向系统广播有序事件,send Broadcast()是用来广播无序事件。 6.下列关于Intent启动组件说法错误的是(C) A.startActivity( ) B. startService( ) C. startBroadcastReceiver() D.startActivityForResult() 7.对于广播的发送,Intent的启动方式是(B ) A.显式启动 B. 隐式启动 C. A和B都可以 D. 以上说法都不正确。 8. 下面关于Notification的说法正确的是(D ): A. NotificationManager man = new NotificationManager(); B. PendingIntent contentIntent= new PendingIntent(); C. RemoteViews contentView = new RemoteViews(); D. Notification notification = new Notification(); 9. 关于ContenValues类说法正确的是( A ) A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是String类型,而值都是基本类型 B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是任意类型,而值都是基本类型 C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名,可以为空,而值都是String类型 D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型

Android利用Gson解析实现天气预报

用Android Studio新建一个默认工程后,将第一张图片红色标记文件修改到相应代码即可

package com.example.rui.weatherforecast; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText; import android.widget.Toast; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import https://www.doczj.com/doc/37442376.html,.HttpURLConnection; import https://www.doczj.com/doc/37442376.html,.MalformedURLException; import https://www.doczj.com/doc/37442376.html,.ProtocolException; import https://www.doczj.com/doc/37442376.html,.URL; public class MainActivity extends AppCompatActivity { EditText et_city, et_weather, et_highTemp, et_lowTemp; Weatherinfo weatherinfo; Weatherinfo.Weather weather;

Android中使用Gson解析JSON数据

Android中使用Gson解析JSON数据 本文由包小卷发表于3年前| Android | 暂无评论| 被围观25,355 views+ 在Android中可以使用Gson解析JSON数据 首先,从 https://www.doczj.com/doc/37442376.html,/p/google-gson/downloads/list下载GsonAPI: google-gson-1.7.1-release.zip 把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。 可以使用以下两种方法解析JSON数据: 通过获取JsonReader对象解析JSON数据: String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"usernam e\":\"Jason\",\"userId\":002}]"; try{ JsonReader reader = new JsonReader(new StringReader(jsonData)); reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while(reader.hasNext()){ String tagName = reader.nextName(); if(tagName.equals("username")){ System.out.println(reader.nextString()); } else if(tagName.equals("userId")){

System.out.println(reader.nextString()); } } reader.endObject(); } reader.endArray(); } catch(Exception e){ e.printStackTrace(); } 通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作:创建JSON数据对应的一个POJO 对象User.java: public class User { private String username ; private int userId ; public String getUsername() { return username; } public void setUsername(String username) { https://www.doczj.com/doc/37442376.html,ername = username; } public int getUserId() { return userId; } public void setUserId(int userId) { https://www.doczj.com/doc/37442376.html,erId = userId; } } 使用Gson对象获取User对象数据进行相应的操作: Type listType = new TypeToken>(){}.getType(); Gson gson = new Gson(); LinkedList users = gson.fromJson(jsonData, listType); for (Iterator iterator = users.iterator(); iterator.hasNext();) { User user = (User) iterator.next(); System.out.println(user.getUsername()); System.out.println(user.getUserId()); }

json数据的存储和读写

android中JSON数据的读写方法 博客分类: android [/color]用习惯了XML,总觉得JSON可读性又差,也不好保存等等,到真正接触了,才发现在android上,JSON就像亲儿子一样容易管教。 还是先看数据源,数据源我采用的是一系列的村民集合,村民的属性如下。 Java代码 1public class Folk { 2String name; 3String career; 4String age; 5int salary; 6boolean sex; 引用 先看写数据,数据是我假定一个村的数据,由一个arraylist填装。通过一个for循环很容易取出了arraylist中的每个对象以及其数据,每个对象,即村民都可以生成一个JSONobject,这里json和java面向对象的思想是多么吻合。prey load! 其次还有一个JSONarray对象,就是一个JSON自己的Arraylist。好比我们把自己的对象转存到一个Json对象中,从我们的Arraylist中取出来,再装进一个Json的Arraylist。 好比我把一个个村名从一辆大卡车上接下来(从自己的ArrayList取),把他们穿戴整齐了

(装进Json对象中),再挥挥手把他们送上火星游的太空飞船(jsonArray),临走我在飞船上挂上了village的标签,火星上的同事会知道我的村民坐的是哪艘船。所有工序完成。 看代码 Java代码 7public class MyJsonWriter { 8ArrayList folks; 9File saveFile; 10public MyJsonWriter(ArrayList folks){ 11this.folks=folks; 12} 13 14public void setFilePath(String filepath){ 15saveFile=new File(filepath); 16try { 17saveFile.createNewFile(); 18} catch (IOException e) { 19// TODO Auto-generated catch block 20 e.printStackTrace(); 21} 22} 23

相关主题
文本预览
相关文档 最新文档