首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取具有"'“(格式错误?)的json字符串。

问读取具有"'“(格式错误?)的json字符串。
EN

Stack Overflow用户
提问于 2013-10-02 19:29:44
回答 1查看 3.4K关注 0票数 0

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

如果我做了

代码语言:javascript
复制
JSON.parse (data)

我得到了一个

代码语言:javascript
复制
SyntaxError: Unexpected token

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

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

fs =需要量(Fs)

代码语言:javascript
复制
fs.readFile 'output.json', '', (err, data) ->
  if err?
    console.log err
  json = JSON.parse(data)
  console.log json

返回

代码语言:javascript
复制
undefined:1
 De L\'Embustier
      ^
SyntaxError: Unexpected token '
    at Object.parse (native)

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

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

编辑:来自jsonlint.com的响应

代码语言:javascript
复制
Parse error on line 1297:
...         "Address": "36 Rue De L\'Embust
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

EDIT2:下面是整个文件:http://pastebin.com/ACUfvPCx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-02 19:58:57

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

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19145272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档