JSON的理解

来源:互联网 发布:js中字符串转换成数组 编辑:程序博客网 时间:2024/05/16 12:39

 JSON或者Javascript对象标志(JavaScript Object Notation)是JavaScript的一个子集,它主要用于定义诸如整型、布尔型或者数组类型的数据。javascript提供方法来对其进行解析,因此在Javascript中使用JSON是很容易的,它的格式可以很容易地被任何语言解析。 

尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。

现在, JSON 为 Web 应用开发者提供了另一种数据交换格式。让我们来看看 JSON 到底是什么,同 XML 或 HTML 片段相比,JSON 提供了更好的简单性和灵活性。

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

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

"abc"

JSON的用途很广,在很多可以很容易使用XML的场合,你都可以使用JSON,它的主要优势在于它是轻量的(不论是对开发者还是带宽),并且它可以很容易在javascript中被解析。让我们看一个示例:

下面是一段简单的XML,它表示一个关于图书的集合:<books>   <book title ="Frankenstein" author="Mary Shelly"/>   <book title ="1986" author="George Orwell"/>   <book title ="The Sun Also Rises" author="Ernest Hemingway"/>   <book title ="Pride and Prejudice" author="Jane Austen"/></books>如果使用JSON,可能是以下形式:{ "books":[  {"title":"Frankenstein","author":"Mary Shelly"},  {"title":"1986","author":"George Orwell"},  {"title":"The Sun Also Rises","author":"Ernest Hemingway"},  {"title":"Pride and Predudice","author":"Jane Austen"}]}

Json的基本结构是使用“{}”来包住对象,该对象包含键和值以冒号分隔,键值对之间以逗号分界,字符串要被包在双引号("")中,并且对象的键名字始终都是一个字符串,属性值可以使任何Json支持的数据类型,包括字符串、其他对象类型、数字以及布尔类型(true或者false)、一个指定的空值和数组。Json的数组被“[]”包住,数组元素的类型可以是任何json数据类型(包括对象和数组),数组元素之间以“,”进行分隔。

下面是.net数据类型和json对应的定义:

Json                                                                  描述
"hello world"                                  字符串——"hello world"

123                                                 数字——123

123.45                                            数字——123.45

{"name" : "Boe"}                           一个对象,它有一个名为name的属性,属性值为“Bob”,在javascript中,你可以按照以下方式使用它:obj.name 或者这样:obj["name"]

 

{"name" : "Bob",                          一个对象,有着和上面的对象相同的属性,另外还有一个名字为Age的属性,属性值为40,在javascript中,你可以按照以下方式使用Age:

  "age" : "40"                                 var ageInOneYear = obj.age +1;

}

 

[1,2,3,4]                                          一个数组,其元素是1,2,3,4

 

[1,"hello"]                                      一个多样化的数组,其元素为数字1和字符串"hello"

 

{                                                      另一个对象,它的name属性值为"Bob" ,age属性值为40 ,kids属性值是一个数组,元素分别是"Sally"和"John",可以通过以下方式

   "name" : "Bob",                        使用它: var firstKid = obj.kids[0];

   "age" : 40,

    "kids" : ["Sally","John"]

}

数组可以内嵌到其他数组或者对象中,对象可以内嵌到其他对象或者数组中。


开发时的应用:

 rtn.Append("{name:\"" + trs[i]["USERNAME"] + "\",empno:\"" + trs[i]["EMPNO"] + "\",userid:\"0\",unit:\"" + trs[i]["UNITNAME"] + "\",unitid:\"" + "MSL-" + trs[i]["UNITID"] + "\",ext:\"" + trs[i]["OFFICE_EXT"] + "\"}");     
在Append方法里面,是一块一块字符串的相加,如"{name:\""  ,左右两端的""标记此为字符串,字符串里面的\"代表在字符串里面的添加一个"。
原创粉丝点击