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不支持这个方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容