有没有想过,当我们的大后台只是扮演一个数据库的角色,json在前后台的数据交换中扮演极其重要的角色时,作为依托node的前端开发,其实相当多的时间都是在处理数据,准确地说就是在处理逻辑和数据(这周实习最大的收获)。
而对于依托json格式传输的数据,处理数据时,用到JSON.strinify和JSON.parse的概率是百分之百。使用这两个方法so easy,但是你真的知道其中一些相关的细节以及其中牵涉到的javascript的知识么?
JSON.parse用于从一个字符串中解析出json对象。
比如
var str = '{"name":"huangxiaojian","age":"23"}'; var str1 = JSON.parse(str);
如果你在控制台输出str1,你会发现,输出的结果是
{ name="huangxiaojian", age="23"}
也就是说,输出的是javascript对象。
事实上,对于str这个字符串是很有讲究的。首先,它必须是个字符串,所以它肯定是被单引号括起来的,而且一般绝对是单引号,理由是:还有一个要求就是字符串的内容必须符合json格式,而json格式就是要求json对象中属性名必须添加双引号。
下面举几个常见的例子:
//以下str都是无法parse成功的 var str = {"name": "xiaohu","age": 23}; //不是字符串 var str = '{"name": xiaohu,"age": 23}'; //xiaohu作为字符串没有加引号 var str = '{name: "xiaohu","age": 23}'; //name作为json数据的属性名没有加引号
JSON.stringify用于从一个对象解析出字符串,说白了,就是把对象转换为字符串。
var a = {a:1,b:2}; var b = JSON.stringify(a);
将b从控制台输出,你会看到{"a":1,"b":2},也就是说,JSON.stringify接收一个对象,将对象转换成一个字符串,神奇的是,这个结果字符串是满足json格式的。当然,这也就是JSON.stringify中的JSON存在的意义。
JSON.parse和JSON.stringify注定协同工作。将一个不符合json格式的对象,通过JSON.stringify转换为符合json格式的字符串,然后通过JSON.parse转换为json对象。很多时候,JSON.stringify和JSON.parse就是彼此作为桥梁,完成参数格式的要求,以及转换成对象或字符串以方便完成后续特定的操作。:)