JSON.parse()方法将字符串转化为JSON对象遇到的问题

问题

今天在使用后台 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.单引号与双引号
    只能严格使用双引号而不能使用单引号,否则失败

    1. 兼容问题
      IE6/7不支持这个方法

你可能感兴趣的:(JSON.parse()方法将字符串转化为JSON对象遇到的问题)