Ruby on Rails JSON.parse 意外的令牌错误

26

我正试图使用JSON.parse在我的Rails 3应用程序中解析JSON数据。我一直收到这个错误:

737:意外的令牌 '{\"0\":{\"class\":\"window\",\"text\":\"Testing\",\"style\":\"position: absolute; top: 8px; left: 8px; width: 560px; height: 290px; z-index: 0; \"}

实际的JSON数据更长,但基本相同。

3个回答

43

好的,根据您展示给我们的JSON的一部分,我们只能回答两个问题:

  1. 所有引号字符(")都被转义了;除非它们用于双引号字符串中,否则不需要转义,而看起来它们并没有。
  2. 您缺少一个闭括号(})。

否则,该JSON符合 https://jsonlint.com/ 的标准。


4
谢谢!问题在于转义引号。这个方法可行:JSON.parse(content.gsub('\"', '"')) - Shlomo Zalman Heigh
1
转义是地狱: 我曾经遇到过同样的问题,这个链接对我很有帮助。 https://dev59.com/MHA75IYBdhLWcg3w3NBe - obesechicken13

14
在我的情况下,是一个隐藏的制表符,只有当我将它粘贴到vim中时才会显示出来。

1
在我的情况下也是一样的。对象周围有一些空格。 - Christoffer
同样的问题。我的一个字段值中有一些未转义的\r字符。 - Illya Moskvin

2
您可以直接使用内置方法JSON.Parse()
content = "[{\"addon_id\":\"1\",\"addon_price\":\"5\"}]"
# OUTPUT at Console => "[{\"addon_id\":\"1\",\"addon_price\":\"5\"}]"

JSON.parse(content.gsub('\"', '"'))
# OUTPUT at Console => [{"addon_id"=>"1", "addon_price"=>"5"}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接