我在rails上使用ruby来创建一个cookie,该cookie将包含请求的params的数组作为字符串返回给视图。但是,当我JSON.parse该字符串时,我收到以下错误:
JSON.parse('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D')
Uncaught SyntaxError: Unexpected token % in JSON at position 0
我该如何解决这个问题?
答案 0 :(得分:2)
该字符串无效json。
它是uri编码的,因此使用decodeURIComponent()
JSON.parse(decodeURIComponent('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'))
答案 1 :(得分:1)
您需要使用decodeURIComponent
来首先解码字符串。
JSON.parse(decodeURIComponent(
'%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'
));
由于字符串已编码。解码后,您将获得键值对,即字符串形式的对象。现在,您可以使用JSON.parse
来构建Javascript对象。
答案 2 :(得分:1)
其他答案在说有效负载是URI编码时是正确的,但decodeURIComponent
只是一种javascript方法。要将其解码为ruby-side,请使用URI.unescape
。
JSON.parse(URI.unescape('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'))
您说您正在使用rails,因此URI对象应该已经可用,但如果您没有使用rails,则首先需要require 'uri'
。