-1

如果我键入以下内容,请在 rails 控制台中:

User.all.to_json

我得到以下返回。

"[{\"created_at\":\"2013-04-29T23:10:36Z\",\"email\":\"test@test.com\",\"id\":2,\"updated_at\":\"2013-04-29T23:10:36Z\"},{\"created_at\":\"2013-03-18T04:53:42Z\",\"email\":\"sharataka@gmail.com\",\"id\":1,\"updated_at\":\"2013-05-01T12:03:01Z\"}]"

将其复制/粘贴到http://jsonviewer.stack.hu/并尝试将其视为 JSON 时,我收到一条错误消息,提示“无效的 JSON 变量”。我相信这是因为 '\' 字符。关于如何解决这个问题的任何建议?

4

2 回答 2

2
  • to_json返回带有转义引号等的 JSON 字符串。
  • as_json将其作为实际 JSON 返回,这将正确验证。

您使用哪个取决于您如何渲染它。

于 2013-05-01T18:47:30.417 回答
0

如果您在控制台中执行此操作,则输出包含多个引号和反斜杠是“正常的”。

在我的 irb 控制台中:

irb(main):009:0> Patient.first.to_json
#=> "{\"patient\":{\"created_at\":\"2013-03-14T16:53:52-04:00\",\"id\":6538,\"updated_at\":\"2013-03-14T16:53:52-04:00\"}}"

但使用方法puts

irb(main):010:0> puts Patient.first.to_json
{"patient":{"created_at":"2013-03-14T16:53:52-04:00","id":6538,"updated_at":"2013-03-14T16:53:52-04:00"}}
#=> nil
于 2013-05-01T19:02:04.020 回答