javascript - 读取一个 json 字符串,其中包含 "'“(格式错误?)

标签 javascript json node.js coffeescript

我需要使用返回 JSON 的服务。我对该服务(第三方)没有任何影响。

如果我这样做

JSON.parse (data)

我得到一个

SyntaxError: Unexpected token

我知道该服务可以正常工作,因为错误的发生取决于输入参数。 换句话说,有时它确实有效! HTTP响应代码是200,因此它不是某种访问错误,并且它是可重复的。

我可以假设它们返回格式错误的 JSON 吗? 将数据作为文本文件写入磁盘并按如下方式读取:

fs = require('fs')

fs.readFile 'output.json', '', (err, data) ->
  if err?
    console.log err
  json = JSON.parse(data)
  console.log json

返回

undefined:1
 De L\'Embustier
      ^
SyntaxError: Unexpected token '
    at Object.parse (native)

这有点奇怪,因为似乎字符串已正确转义,但仍然没有被正确读取。

文件300+k;还没看到如何附加它。

编辑: 来自 jsonlint.com 的回复

Parse error on line 1297:
...         "Address": "36 Rue De L\'Embust
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

编辑2: 这是整个文件: http://pastebin.com/ACUfvPCx

最佳答案

服务确实返回格式错误的 JSON。

JSON 中没有 \' 转义序列。在 Javascript 中转义任何字符都是完全有效的,但 JSON 使用 Javascript 语法的子集,并且只允许转义实际上可能需要转义的字符。由于撇号在 JSON 中不用作字符串分隔符,因此不需要转义。

如果您无法修复服务,则需要以纯文本形式请求 JSON,将转义的撇号替换为撇号本身,然后将文本解析为 JSON。

关于javascript - 读取一个 json 字符串,其中包含 "'“(格式错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145272/

相关文章:

node.js - 列出已连接 Stripe 账户的所有费用

javascript - Jquery slider 在事件更改时更新值

javascript - 返回 Promise/具有 .then() 方法的 ES6 类?

json - 如何让 jquery fullcalendar 将附加参数传递给我的 json 提要脚本

ios - 迅速在iOS中检索json数据

php - 仅显示数组中包含特定单词的值

javascript - 如果需要在 rethinkdb 中创建数据库

javascript - 如何使我的变量成为全局变量以及如何使程序等待特定条件?

javascript - 按下 <a> 内的图像时如何传递 id

javascript - 在条件运算符中运行代码是否安全?