Json简介入门
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,非常适合于服务器与JavaScript 的交互。相比XML,他更易于人阅读和编写,它是JavaScript的一个子集。JSON采用完全独立于语言的文本格式,可以在流行的语言中使用,比如C# Java C++ VB。这些特性使JSON成为理想的数据交换语言。
一、Json的构建结构
1.“键/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。
2.值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。简单地说,JSON 可以将JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是JavaScript 很容易解释它,而且JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
二、JSon具体表现形式
1、对象是一个无序的“…键/值‟对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“…名称/值‟对”之间使用“,”(逗号)分隔。
2、数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
3、值(value)可以是双引号括起来的字符(string)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。
简单JSON 示例
按照最简单的形式,可以用下面这样的JSON 表示名称/值对:
这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:
但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下JS ON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
值的数组
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML 中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面文章中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键名称修改为person1-firstName 这样的形式。
如果使用JSON,就只需将多个带花括号的记录分组在一起:
这不难理解。在这个示例中,只有一个名为people 的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):
"*********************"}, {"firstName":"Jason","lastName":"Hunter","email":"******************"}, {"firstName":"Elliotte","lastName":"Harold","email":"*****************"} ],
"authors": [json值的类型有哪些
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]
}
这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在JSON 结构的中间改变表示数据的方式。
在处理JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变
表示数据的方式,甚至可以以不同方式表示同一事物。
在JavaScript 中使用JSON
掌握了JSON 格式之后,在JavaScript 中使用它就很简单了。JSON 是Java Script 原生格式,这意味着在JavaScript 中处理JSON 数据不需要任何特殊的API 或工具包。
将JSON 数据赋值给变量
例如,可以创建一个新的JavaScript 变量,然后将JSON 格式的数据字符串直接赋值给它:
这非常简单;现在people 包含前面看到的JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。
访问数据
尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问programmers 列表的第一个条目的姓氏,只需在JavaScript 中使用下面这样的代码:
注意,数组索引是从零开始的。所以,这行代码首先访问people 变量中的数据;然后移动到称为programmers 的条目,再移动到第一个记录([0]);最后,访问lastName 键的值。结果是字符串值“McLaughlin”。
下面是使用同一变量的几个示例。
利用这样的语法,可以处理任何JSON 格式的数据,而不需要使用任何额外的JavaScript 工具包或API。
修改JSON 数据
正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:
在将字符串转换为JavaScript 对象之后,就可以像这样修改变量中的数据。
转换回字符串
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论