天天看点

JSON 基础知识总结

json,说白了就是javascript用来处理数据的一种格式,这种格式非常简单易用。json大部分都是用来处理javascript和web服务器端之间的数据交换,把后台web服务器的数据传递到前台,然后使用javascript进行处理,例如ajax等

json支持的语言非常多,包括javascript、c#、php、java等等,这是由于json独立于语言的轻量级的数据交换格式,这个特点有点类似于sql语言

json结构共有2种:无序的对象结构、有序的数组结构;

对象结构是使用大括号“{}”括起来的,大括号内是由0个或多个用英文逗号分隔的“关键字:值”对(key:value)构成的

这里的键名是字符串,但是值可以是数值、字符串、对象、数组或逻辑true和false

json数组结构是用中括号“[]”括起来,中括号内部由0个或多个以英文逗号“,”分隔的值列表组成

在json数组中,每一对“{}”相当于一个json对象

json是javascript object notation的简称,是一种轻量的数据表示方法。json格式采用key:value的方式记录数据,非常直观,比xml简洁,因而大受欢迎

简单地说,json 可以将 javascript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 web 客户端传递给服务器端程序。这个字符串看起来有点儿古怪,但是 javascript 很容易解释它,而且 json 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表

当需要表示一组值时,json 不但能够提高可读性,而且可以减少复杂性

掌握了json格式后,在javascript中将json数据赋值给变量就很简单了。json是javascript原生格式,这意味着在javascript中处理json数据不需要任何特殊的 api 或工具包

例如,可以创建一个新的javascript变量,然后将 json 格式的数据字符串直接赋值给它

实际上,只需用点号表示法来表示数组元素。所以,要想访问 people 列表的第一个条目的姓氏,只需在 javascript 中使用下面这样的代码:

利用这样的语法,可以处理任何 json 格式的数据

可以将任何 javascript 对象转换为 json 文本

json 格式支持以下数据类型:

类型

描述

数字型(number)

javascript 中的双精度浮点型格式

字符串型(string)

双引号包裹的 unicode 字符和反斜杠转义字符

布尔型(boolean)

true 或 false

数组(array)

有序的值序列

值(value)

可以是字符串,数字,true 或 false,null 等等

对象(object)

无序的键:值对集合

空格(whitespace)

可用于任意符号对之间

null

javascript 中的双精度浮点型格式,取决于实现。不能使用八进制和十六进制格式,在数字中不能使用 nan 和 infinity

下表展示了数字类型:

整形(integer)

数字1-9,0和正负数

分数(fraction)

分数,比如 .3,.9

指数(exponent)

指数,比如 e,e+,e-,e,e+,e-

零个或多个双引号包裹的 unicode 字符以及反斜杠转义序列

字符就是只有一个字符的字符串,长度为 1

下表展示了字符串类型:

"

双引号

\

反斜线

/

斜线

b

退格符

f

换页符

n

换行符

r

回车符

t

水平制表符

u

四位十六进制数字

包含 true 和 false 两个值

它是一个有序的值集合,使用方括号闭合,这意味着数组以 [ 开始,以 ] 结尾,值使用 ,(逗号)分割,数组索引可以以 0 或 1 开始,当键名是连续的整数时应该使用数组

它是一个无序的名/值对集合,对象使用大括号闭合,以 '{' 开始,以 '}' 结尾,每个名称后面都跟随一个 ':'(冒号),名/值对使用,(逗号)分割,键名必须是字符串并且不能同名,当键名是任意字符串时应该使用对象

json对象可以使用javascript创建。我们来看看使用 javascript 创建 json 对象的各种方式:

1.创建一个空对象:

2.创建一个新对象:

3.创建一个 bookname 属性值为字符串,price属性值为数字的对象。可以通过使用 '.' 运算符访问属性

所谓json字符串,是指该字符串变量的值与json的格式相同,但是不是json对象

虽然status_process的值符合json对象的格式,但是它不是对象,只是一个字符串(是拼凑出来的),将字符串转换为json对象使用函数eval,eval("(" + status_process+ ")")。

可以在任意一对符号之间插入。可以添加用来让代码更可读

意味着空类型

包括:数字(整型和浮点型)、字符串、布尔值、数组、对象、null