问题
今天在使用后台 node 将一个JSON文件传送至前端,前端使用 JSON.parse()
方法解析过程中出现了解析失败的问题,类似这样
分析
具体过程是:前端请求数据,node 读取 JSON 文件,后发送至前端。node 在使用 fs
模块读取文件时,会将文件内容转化为 string
格式。
由于我的JSON文件并不是标准的 k-v 键值对格式,而是JS 对象,也就是说 key 是没有双引号的。而 JSON.parse()
方法是无法对这种类型的格式进行转化的,所以失败了。
解决
这里我采用了另外一种转化方法:
this.graphData = eval("(" + res.data + ")");
解决了上面的问题。
字符串转化为对象的三种方法
var json = JSON.parse(str)
var json = eval("(" + str + ")")
var json = (new Function("return " + str))()
这是最常见的三种方法,当然其中JSON.parse()
是有一定的局限的。
JSON.parse()
方法应该注意的点
1.字符串的数据格式
字符串中的内容必须严格按照JSON方法书写,即"key" : "value"
的格式2.单引号与双引号
只能严格使用双引号而不能使用单引号,否则失败- 兼容问题
IE6/7不支持这个方法
- 兼容问题