Rails的as_json方法在JSON.parse中无法正确编码

4

因此,在我的视图中,我正在使用ruby的object.as_json将一个相当复杂的对象转换为JSON格式,然后在客户端使用javascript的JSON.parse()解析它以将对象反序列化为可用的内容。 然而,as_json的输出似乎使用单引号标记编码为",而不是JSON结构所需的双引号。有什么建议,我在使用as_json时做错了什么吗?


能否发布object.as_json的输出?也许当您的对象返回时,您的键可能是字符串和符号的组合。 - Chris Barretto
当然:您会得到像这样的输出 { "id"=>303, "name"=>"测试序列", "privacy"=>0, "updated_at"=>Mon, 03 Dec 2012 21:51:39 UTC +00:00, "user_id"=>1} - RoryB
+1,很好。并且尊重您找到解决方案并分享它。我是Rails的新手,但我发现其他Rails开发人员缺乏帮助非常令人失望。 - gotqn
1个回答

5
啊,我明白发生了什么事情:实际上这是两个不同问题的结合:
首先,引号被Rails自动编码(以防止XSS和类似攻击),可以通过使用`html_safe`方法或`raw`函数来转义(但这可能会引入XSS漏洞,因此请谨慎使用)。
其次,我使用的是`as_json`而不是`to_json`。在Rails中将ActiveSupport对象转换为JSON需要进行两个不同的操作:将对象渲染为可序列化为JSON的结构,然后实际序列化对象。`to_json`执行这两个操作,而`as_json`仅执行第一个。这就解释了为什么我的输出中会出现`= &gt`。

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