JSON详解

来源:互联网 发布:linux搭建telnet服务器 编辑:程序博客网 时间:2024/06/11 02:58

JSON详解

导读:读到Json(JavaScript object natation对象标记)我们首先想到的是她的用处,她的主要用处是数据交互。

什么是数据交互?

数据的传输与回应。

Json和xml、html都可以用来传输数据信息。她们有什么不同和相同的特点呢?

 

然后我们会根据她经常出没的地方加以总结,在Ajax中她的主要作用是数据的传输,在Android中的作用是什么呢?她们的区别和相同点是什么呢?

 

Ajax眼中的Json:

l        一种轻量级的数据交换格式

l        和XML一样,基于纯文本的数据格式,它被存储在 responseText 属性中

l        可以表达String、Number、Boolean、数组、甚至对象等数据

l        适合于服务器与JavaScript客户端的交互

 

l      JSON(JavaScript Object  Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。

l      JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔

规则如下:

1) 映射用冒号(“:”)表示。名称:值

2) 并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2

3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}

4) 并列数据的集合(数组)用方括号(“[]”)表示。

[

{名称1:值,名称2:值2},

{名称1:值,名称2:值2}

]

 

5        元素值可具有的类型:string, number, object, array, true, false, null

6         

l       为了读取存储在 responseText 属性中的 JSON 数据,需要根据 JavaScript 的 eval 语句。

函数 eval 会把一个字符串当作它的参数然后这个字符串会被当作 JavaScript 代码来执行。因为 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可执行的

JSON文本格式数据如何解析成对象

比如

  var  s= "{'name':'张三','age':20}";

 

可使用JavaScript的eval()函数来解决。

var obj =eval("(" + s + ")");

alert(obj.name);

 

l      优点:

l      作为一种数据传输格式,JSON 与 XML 很相似,但是它更加灵巧。

l      JSON 不需要从服务器端发送含有特定内容类型的首部信息。

l      缺点:

l      语法过于严谨

l      代码不易读

l      eval 函数存在风险

 

 

 

Android眼中的Json:

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

在Android中解析JSON字符串[{"name":"Michael","age":20},{"name":"Mike","age":21}]
先分析一下这个JSON字符串的结构:一个JSONArray里面有两个JSONObject
再分析一下JsonReader解析这个JSON字符串的流程:
遇到【[】,开始解析数组(reader.beginArray())
遇到【{】,开始解析对象(reader.beginObject())
遇到【"】,开始解析第一个键值对
遇到【"】,开始解析第二个键值对
遇到【}】,结束解析对象(reader.endObject())
遇到【{】,开始解析对象(reader.beginObject())
遇到【"】,开始解析第一个键值对
遇到【"】,开始解析第二个键值对
遇到【}】,结束解析对象(reader.endObject())
遇到【]】,结束解析数组(reader.endArray())

 

 

Ÿ          使用URL封装路径,打开一个HttpURLConnection

Ÿ          设置头信息之后获取相应码,从输入流中获取数据

Ÿ          将数据转为String,封装成JSONArray对象

Ÿ          遍历JSONArray对象,调用获取其中的JSONObject

Ÿ          再从JSONObject中获取每个字段的信息

 

我眼中的Json

不论是在Ajax还是在Android中Json都是用来传输交换数据用的,作为一种数据传输格式,她的作用很明显,就是用来传输数据。

在Ajax中是基于纯文本的数据格式,她可以看做一个map<key,value>数组,你把数据(信息)存放到这个map<key,value>中,当你需要调用其中的数据时你可以通过getkey这个方法得到其中的value的值;

在Android中她的作用也是数据传输交换,她把数据封装成一个对象,等到她要解析的时候,她再遍历她封装好的对象,调用其中的解析方法,获取每个字段信息。

最后,得出JSON在AJAX和Android中的作用都是一样的,都是用啦传输数据交换用的,只不过是调用的方法有所不同……

原创粉丝点击