我正在使用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对象。