JSON.parse无法从字符串创建对象



我正在使用ruby on rails创建一个cookie,该cookie将包含请求参数的数组作为字符串返回到视图。然而,当我JSON.parse该字符串时,我得到了以下错误:

JSON.parse('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D')
Uncaught SyntaxError: Unexpected token % in JSON at position 0

我该怎么解决这个问题?

字符串不是有效的json。

它是uri编码的,所以使用decodeURIComponent()进行解码

JSON.parse(decodeURIComponent('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'))

其他答案是正确的,即负载是URI编码的,但decodeURIComponent只是一个javascript方法。若要解码ruby侧,请使用URI.unescape

JSON.parse(URI.unescape('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'))

您说您使用的是rails,所以URI对象应该已经可用,但如果您不使用rails,则需要首先使用require 'uri'

首先需要使用decodeURIComponent对字符串进行解码。

JSON.parse(decodeURIComponent(
'%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'
));

当字符串被编码时。一旦解码,就会得到键值对,即字符串形式的对象。现在您可以使用JSON.parse来形成Javascript对象。

最新更新