Files
notes_estom/JavaScript/ecmascript-5/json.md
2022-04-18 20:40:34 +08:00

3.0 KiB
Raw Blame History

JSON 全称为 JavaScript Object Notation译为 JavaScript 对象表示法。是一种轻量级的数据交换格式。

官网地址: http://www.json.org/json-zh.html

JSON 易于开发者阅读和编写也易于计算机解析和生成。它基于JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999的一个子集。

JSON 采用完全独立于语言的文本格式,被 Java、C#、C++、PHP、OC 等几乎所有主流语言所支持。

JSON 作为一种轻量级的文本数据交换格式,已被广泛使用于存储和交换文本数据领域。

语法规则

JSON 构建于两种语法结构:

  • “名称 / 值”对的集合。在 JavaScript 中被解释为 对象。

  • 值的有序列表。在 JavaScript 中被解释为 数组。

JSON 存储数据的类型可以是字符串string、数值(number)、true、false、 null、对象object或者数组array。这些结构可以嵌套。

JavaScript 中的 JSON

JavaScript 中使用字符串String来表示 JSON 的两种结构。

  • “名称 / 值”对的集合。
var jsonTxt = ' { 
	"ename" : "Tom", 
	"salary" : 3500,
	"isMarried" : true
} ';
  • 值的有序列表。
var jsonTxt =' [ "Tom", "Mary", "John" ] ';

值得注意的是: 字符串必须用双引号括起来。

JSON 对象

JavaScript 提供了 JSON 对象,该对象具有两种方式:

方法名 描述
JSON.parse() 解析JSON字符串可以选择改变前面解析后的值及其属性然后返回解析的值。
JSON.stringify() 返回指定值的 JSON 字符串,可以自定义只包含某些特定的属性或替换属性值。

值得注意的是: IE 8 版本之前(包含 8 版本)并不支持 JSON 对象。必须下载 json2.js 或 json3.js 工具解决此问题。

JSON 转换为 JavaScript

将 JSON 转换为 JavaScript 具有两种方式:

  • 利用 JavaScript 中的 eval() 函数。该函数用于执行以字符串String形式出现的JavaScript代码。
var jsonTxt = ' { "x": 60, "y": 30 } ';
var jsObj = eval( "(" + jsonTxt + ")" ) ;

值得注意的是:

  • 根据 eval() 的严格语法要求,其接收的参数只能是 string 类型,而不能是 String 类型!
  • 使用 eval() 将 JSON 字符串解析为 JavaScript 对象时,若不添加左右的小括号,会抛出 SyntaxError。
  • 利用 JavaScript 中 JSON 对象的 parse() 方法。
var jsonTxt = ' { "x": 60, "y": 30 } ';
var jsObj = JSON.parse( jsonTxt );

JavaScript 转换为 JSON

利用 JavaScript 中 JSON 对象的 stringify() 方法将 JavaScript 转换为 JSON。

var jsObj = { 'x': 60, 'y': 30 } ;
console.log( typeof JSON.stringify( jsObj ) );