【问题标题】:Retrieving JSON from cookies从 cookie 中检索 JSON
【发布时间】:2014-08-31 01:31:10
【问题描述】:

我的cookie设置如下

cookies[:cart] = "[{"id":"23","amount":"9"},{"id":"37","amount":"4"}]"

cookies[:cart] 返回[{"id":"23"

在 cookie 上调用 .each 会产生这种可恶的情况:

["cart", "[{\"id\":\"23\""] ["\"amount\":\"9\"}", nil] ["{\"id\":\"37\"", nil] ["\"amount\":\"4\"}]", nil] 

我完全迷失了,无法真正弄清楚发生了什么(我怀疑',' 正在做一些有趣的事情)。

所以我的问题是:

  • 有没有办法解决这个问题?
  • 将 JSON 存储在 cookie 中是不是我做错了什么?
  • 如果 point_2 那么,有什么更好的方法? (我主要使用 Javascript 存储并使用 RoR 读取,我认为使用内置 JSON 函数进行解析会更容易。)

【问题讨论】:

  • 这正是它产生的还是您手动输入的?你想做什么?

标签: javascript ruby-on-rails json cookies ruby-on-rails-4


【解决方案1】:

您的哈希在 ruby​​ 中如下所示:[{id:23,amount:9},{id:37,amount:4}]

要将其转换为 json,请使用 [{id:23,amount:9},{id:37,amount:4}].to_json,这将为您提供:

"[{\"id\":23,\"amount\":9},{\"id\":37,\"amount\":4}]"

【讨论】:

  • 上面的哈希是用javascript生成的,并存储为cookie
【解决方案2】:

仍然不确定我正在做的事情是否是处理此类情况的正确方法,但我应该的解决方法如下:

在存储 cookie 之前,我在 Javascript 中调用 .replace(/,/g, '.');,在 Javascript 中检索它之后调用 .replace(/\./g, ',');,在 RoR 中检索它之后调用 .gsub(/\./, ",")

对我来说似乎是一个可怕的解决方法,但目前这对我来说是一个不错的解决方案,因为我 100% 确定此 cookie 中永远不会使用点。

【讨论】:

  • 在 JavaScript 中有一个 JSON 对象,它允许您通过 JSON.parseJSON.stringify 来处理此类工作。
  • @Ahmed,这正是我使用的,也是我将 JSON 存储在 cookie 中的唯一原因。 ruby 和 javascript 都内置了以两种方式解析 JSON 的方法。
猜你喜欢
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多