JSON.parse()方法详解
JSON.parse()方法可以将一个JSON字符串解析成为一个JS对象。在解析过程中,还可以选择性的修改某些属性的原始解析值。
1.1语法
JSON.parse(text[, reviver])。
1.2参数介绍
text必需。一个有效的 JSON 字符串。
reviver可选。一个函数,用来转换解析出的属性值。
为对象的每个成员调用此函数。如果成员包含嵌套对象,则先于父对象转换嵌套对象。对于每个成员,会发生以下情况:
如果reviver返回一个有效值,则成员值将替换为转换后的值。
如果reviver返回它接收的相同值,则不修改成员值。
如果reviver返回null或undefined,则删除成员。
1.3实例详解
例1:
解析一个简单JSON字符串。
JSON.parse('{}'); //返回值:{}
JSON.parse('true'); //返回值:true
JSON.parse('"foo"'); //返回值:"foo"
JSON.parse('null'); //返回值:null
例2:
将json字符串转化为json对象(注意!json字符串的格式一定要标准,key和value一定要用双引号包括,否则会出现解析异常)。
例2-1:
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
alert(contact.surname + ", " + contact.firstname + ", "+ contact.phone);
例2-2:
JSON.parse('[1, 5, "false"]'); //返回值:[1, 5, "false"]
例3:
指定reviver函数,则解析出的JS值(解析值)会经过一次转换后才将被最终返回(返回值)。具体讲:解析值本身以及它所包含的所有属性,会按照一定的顺序(从最最里层的属性开始,一级级往外,最终到达顶层,也就是解析值本身)分别的去调用reviver函数,在调用过程中,当前属性所属的对象会作为this值,当前属性名和属性值会分别作为第一个和第二个参数传入reviver中。如果reviver返回undefined,则当前属性会从所属对象中删除,如果返回了其他值,则返回的值会成为当前属性新的属性值。
当遍历到最顶层的值(解析值)时,传入reviver函数的参数会是空字符串""(因为此时已经没有真正的属性)和当前的解析值(有可能已经被修改过了),当前的this值会是{"": 修改过的解析值},在编写reviver函数时,要注意到这个特例。
例3-1:
JSON.parse('{"p": 5}', function (key, value){
if(key === '') return value; //如果到了最顶层,则直接返回属性值,
return value * 2; //否则将属性值变为原来的 2 倍。
});
执行结果:
{ p: 10 }
例3-2
Var jsontxt='{"a": 1, "b": 2,"c": {"d": 4, "e": {"f": 6}}}';
JSON.parse(jsontxt, function (key, value){
console.log(key); //输出当前的属性名,从而得知遍历顺序是从内向外的,最后一个属性名会是个空字符串。
return value; //返回原始属性值,相当于没有传递 reviver 参数。
});
例4:
JSON.parse()不允许用逗号作为结尾。
JSON.parse("[1, 2, 3, 4, ]"); //both will throw a SyntaxError
JSON.parse('{"foo" : 1, }'); //both will throw a SyntaxError
分享到:
相关推荐
json3.js 【JS / JavaScript 中...JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解 - chunlynn的小屋 - CSDN博客 http://blog.csdn.net/chenchunlin526/article/details/78850924
《Unity中的Newtonsoft.Json.dll库详解与应用》 在Unity游戏开发中,数据序列化与反序列化是一项至关重要的任务,特别是在处理网络通信、存储玩家数据或者与服务器交互时。而Newtonsoft.Json.dll库,也被称为Json...
#### 三、JSON.parse 方法详解 `JSON.parse()` 方法用于将 JSON 字符串转换为 JavaScript 对象。此方法同样支持两个参数: 1. **text**:要解析的 JSON 字符串。 2. **reviver**:可选参数,用于指定如何处理已...
**Newtonsoft.Json.dll 3.5 知识点详解** `Newtonsoft.Json.dll` 是一个广泛使用的第三方JSON库,由James Newton-King 开发,它为.NET Framework 提供了高效且功能丰富的JSON处理能力。在.NET 3.5环境下,`...
今天在这里笔者想简单谈谈jquery里面的JSON.parse()和JSON.stringify()函数,顺便还会提一下原生JS里面的eval()函数 (1)JSON.parse 函数 作用:将 JavaScript 对象表示法 (JSON) 字符串转换为对象。
JSONParser的`parse()`方法用于解析JSON字符串,而JSONStringer则提供了一种流式构建JSON结构的方式。 五、源码解析 深入源码,我们可以看到JSONObject和JSONArray的实现基于HashMap和ArrayList,保证了插入和查找...
本文将详细介绍如何对 JSON 串进行反转义操作,并去除其中的反斜杠,以便能够正确地使用 `JSON.parse()` 方法解析 JSON 对象。 #### 1. 什么是 JSON 反转义 在编程语言中,反斜杠 `\` 常用来作为转义字符,用于...
`jQuery.parseJSON()` 是 jQuery 库中用于解析 JSON(JavaScript Object Notation)字符串的一个静态方法。这个函数的主要目的是将符合 JSON 规范的字符串转换成 JavaScript 对象,从而方便在 JavaScript 代码中直接...
其次,可以使用 JSON.parse() 方法,该方法也可以将 JSON 字符串转换为 JavaScript 对象,例如: ``` var object = JSON.parse(jsonTxt); ``` 此外,如果我们使用 jQuery 库,可以使用 $.parseJSON() 方法将 JSON ...
正确转换字符串为JSON对象的方法是使用`JSON.parse()`函数,这是ES5引入的一个安全的解析JSON的内置方法。但是,在旧版本的JavaScript(不支持JSON标准)中,我们可以采取一种变通方式,即在字符串前后加上括号,...
#### 二、JSON转换方法详解 ##### 1. 使用`eval()`进行转换 在早期的JavaScript开发中,开发者可能会使用`eval()`函数来将JSON字符串转换为JavaScript对象。例如: ```javascript var str = '{"name":"张三","sex...
例如,在JavaScript中,可以使用`JSON.parse()`将JSON字符串转换为JavaScript对象,使用`JSON.stringify()`将JavaScript对象转换为JSON字符串。在Python中,可以使用`json`模块实现相同的功能。 总之,JSON是现代...
至于`.chm`文件,它可能包含了JSON的语法详解、解析和序列化方法、最佳实践、常见错误和解决办法等内容。对于初学者,它可能提供了一个系统性的学习路径,包括JSON的创建、解析、验证工具的使用,以及如何在不同语言...
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族...
**Ajax与JSON详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它的核心是JavaScript,通过XMLHttpRequest对象与服务器进行异步数据交互,从而实现网页...
如果需要修改JSON文件中的内容,必须先将JSON字符串解析为JavaScript对象,进行必要的修改后再使用JSON.stringify()方法将JavaScript对象转换为JSON字符串,最后写回到文件中以完成修改。 在遍历JSON对象时,可以...