ruby - JSON 解析 Redis.get 返回

标签 ruby redis

我在 Redis 中存储了一些数据,当我检索这些数据时,我在解析它时遇到了问题。

当我运行这个时:

$redis.get("data") 我得到这个:"[{\"login\"=>\"name\",\"id\"=>1574 }]"

当我尝试对返回正文使用 JSON.parse 时,出现此错误:

JSON::ParserError: 409: '{"login"=>"name", "id"=>1574}]' 处出现意外 token

我做错了什么?

最佳答案

您需要先将 ruby​​ 对象序列化为 JSON,然后再将其存储到 redis 中。

在这种情况下,您需要调用 $redis.set('data', JSON.dump(data)) 而不是当前正在调用的内容,即 $redis。设置('data',data.to_s).to_s 会在传入 redis 的 set 方法的任何对象上被调用。

如果您确实需要解析已经存储的数据,那么您可以使用 ruby​​ 的 eval,尽管您不应该在生产中使用它!

$ data = eval($redis.get('data'))
=> [{"login"=>"name", "id"=>1574}]
$ $redis.set('data', JSON.dump(data))

关于ruby - JSON 解析 Redis.get 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698512/

相关文章:

redis - 在 Redis 中,如果我将一个节点设置为另一个从节点的从节点呢?

caching - Redis 在填满和逐出键时有多慢? (LRU算法)

node.js - Redis在应用程序中的使用

mysql - 将 Redis 数据同步到 MySQL 的最佳策略是什么?

python - Ruby 相当于 Python __main__

ruby - 分割数组。 ruby

ruby-on-rails - 如何运行 Vacuum 等 gem 的示例代码?

php - 无法将 Redis 与 Codeigniter 集成

ruby-on-rails - 是否有任何 Rails 工厂可以帮助我测试非持久性模型?

ruby - DelegateClass 和类似方法存在于哪个对象/类上?