JSON
定义
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。
结构
“名称/值”对的集合不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等
值的有序列表多数语言中被理解为数组(array)JSON使用。JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。 这里假设我们需要创建一个User对象,并具有以下属性 :用户ID 用户名。
JSON的值可以是数字(整数或浮点数)、字符串、布尔值、数组、对象、null,这些结构都可以嵌套。
您可以使用以下JSON形式来表示User对象:
我们也可以定义一个用户列表:
常用方法
JSON.parse()
作用:将 JavaScript 对象表示法 (JSON) 字符串转换为对象。
语法:JSON.parse(text [, reviver])
参数:
text 必需。 一个有效的 JSON 字符串。
reviver 可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。
返回值:一个对象或数组
|
|
JSON.stringify()
作用:将 JavaScript 值转换为 JavaScript 对象表示法 (JSON) 字符串
语法:JSON.stringify( value [, replacer] [, space])
参数:
value 必需,通常为需要转换的JavaScript值(通常为对象或者数组)
replacer 可选,用于转换结果的函数或者数组
space 可选。向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。
返回值:一个包含JSON文本的字符串
|
|
eval()
作用:eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法:eval(string)
参数:
string 必需,要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。
返回值:返回计算string的值,如果有的话 (没有则不做任何改变返回)
|
|
使用eval()函数也可以将JSON字符串解析为对象,这个功能能完成JSON.parse()的功能,但是有不一样的地方,请看下面代码:
注:eval()还要用一对圆括号将字符串包起来。相对于写法格式严格的JSON.parse()来说,eval()可以解析任何字符串,eval是不安全的,因为eval比较宽松,会有潜在的安全性问题。
例如:
1234 let str1 = '{"a":"b"}';console.log(eval("("+str1+")")); //正常解析为对象let str2 = '{"a": (function(){alert("I can do something bad!");})()}';eval('('+str2+')'); //可以用来执行木马脚本
序列化与解析
|
|