redis in ruby 存取hash_ruby 获取redis的hash key-程序员宅基地

技术标签: ruby  

一开始我直接存的hash,然后取值的时候报错

cannot convert symbol into interger

然后查看了redis的代码,所有的数据类型在被set到redis上的时候都被to_s转成String

取出来的自然也是String字符串,然后解析就被当成一个数组,解析期望得到一个[int INDEX],所以报这样的错误

然后我存的时候把hash给JSON.generate Value,取出来的时候,JSON.parse Value <=注意JSON.parse一定保证取出来的Value非空

之后得到的是{"key"=>"value"},解析的时候呢,XX["key"]就取到值了,但不符合我的预期啊,

我想要的是{:key=>value} ,XX[:key]

当然我也想到了另外一种办法,就是直接把hash存上去,然后取出来的时候是hash的字符串,然后eval(STRINGHASH)

这时候呢,如果你的数据都很正常,不像我的中间还有时间的2016-01-01 12:12:00这种的遇到:冒号就出问题 了,明显这种方法行不通

然后解决办法是接着JSON.parse的路继续走下去

写一个方法将key转成符号类型


def hash_key_to_symbol(from_hash)
        to_hash = from_hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
        to_hash
      end
      
      def hash_key_to_symbol_deep(from_hash)
        return from_hash.inject({}){|memo,(k,v)| memo[k.to_sym] = hash_key_to_symbol_deep(v); memo} if from_hash.is_a? Hash
        return from_hash.inject([]){|memo,v| memo << hash_key_to_symbol_deep(v); memo} if from_hash.is_a? Array
        return from_hash
      end


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_29843547/article/details/50553541

智能推荐

Automatically Discovering and Learning New Visual Categories with Ranking Statistics (ICLR 2020)-程序员宅基地

文章浏览阅读112次。我们解决了在给定其他类的带标签示例的图像集合中发现新类的问题。这种设置类似于半监督学习,但明显更难,因为新类没有标记的示例。因此,挑战在于利用标记图像中包含的信息来学习通用的聚类模型,并使用后者来识别未标记数据中的新类。在这项工作中,我们通过结合三个想法来解决这个问题:(1)我们认为,使用标记数据的引导图像表示的常见方法只会引入一种不必要的偏差,而这可以通过使用自我监督学习从有标记和无标记数据的联合上从头开始训练表示来避免;(2)利用秩统计量将模型对带标签类的认识转移到对无标签图像的聚类问题上;_automatically discovering and learning new visual categories with ranking st

peerconnection_client demo总流程(一)_peerconnection_client 简化-程序员宅基地

文章浏览阅读1.3k次。总流程如下:_peerconnection_client 简化

关于IPSEC的简单总结_思科ipsec的对称加密和非对称加密说明-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏13次。密码学基础安全三要素:完整性、私密性、不可否认性(合法性)一、完整性:数据没有遭到损坏,或者篡改通过完整性算法进行完整性校验:哈希算法----不可逆算法MD5 SHA例如本地:MD5(原始数据+秘钥)=KEY1原始数据+KEY1 发送到邻居处邻居:MD5(原始信息+本地秘钥)=KEY2若KEY1=KEY2,则表示认证成功。二、私密性:数据通过转换,形成另一种格式(就是转换为让其他..._思科ipsec的对称加密和非对称加密说明

前端——HTML基础_html空心圆-程序员宅基地

文章浏览阅读6k次。目录html基本标签列表标签无序列表有序列表超链接标签a标签假链接表格标签基本表格单元格合并注意事项表单标签【重点】基本介绍form的常见子标签input:输入类型select :选择菜单textarea:文本域通用属性设置默认值其它属性媒体标签html基本标签标题标签<hn></hn> n取值1~6段落标签 段落之间自动进行换行<p></p>粗体标签<b></b>斜体标签<i></i&_html空心圆

中职计算机教学现状,中职计算机专业教学现状及改革对策-程序员宅基地

文章浏览阅读123次。资料简介中职计算机专业教学现状及改革对策摘要:学好计算机专业对于中职学生来说具有重要的意义,不仅增加了自己的技能,还为就业提供了保障。计算机专业教学培养的是中职学生的实际操作能力和综合素质,是符合社会发展需要的。但是,现在的中职计算机专业教学还存在着一些问题,严重影响了教学质量。本文将通过对中职计算机专业教学现状的分析,提出相应的改革对策。关键词:中等职业学校;计算机专业;改革对策随着互联网技术..._中等职业教育计算机网络教学现状

桌面开发者的界面故事,该醒醒了-程序员宅基地

文章浏览阅读43次。本文我们只谈界面。 大部分人最开始学习编程是Console,搞个计算器啥的,后来高级一点能做一个俄罗斯方块出来。很羡慕那些能做出界面的,于是大二学了MFC,一开始看《深入浅出》怎么都搞不懂,后来我们班的一个女生教了我两个小时,我一下子通畅了,用GDI半个月苦哈哈的做了第一个当时觉得还能看得界面(不用任何控件哦)连箭头都是用三根线拼起来的! ...

随便推点

three.js顶点概念知识点_three.js float32array-程序员宅基地

文章浏览阅读551次。three.js-顶点点let geometry = new THREE.BufferGeometry();let vertices = new Float32Array([ 0, 0, 0, //顶点1坐标 50, 0, 0, //顶点2坐标 0, 100, 0, //顶点3坐标 0, 0, 10, //顶点4坐标 0, 0, 100, //顶点5坐标 50, 0, 10, //顶点6坐标]);let attribue = new THREE.B_three.js float32array

论文研读 —— 10. PCA-Kalman: device-free indoor human behavior detection with commodity Wi-Fi (3/3)-程序员宅基地

文章浏览阅读275次。在这篇论文中,我们提出了一种使用无处不在的Wi-Fi检测室内活动的方法,称为PCA-Kalman,并从商用现成的(COTS) Wi-Fi设备中提取CSI信号。进一步地,实验结果显示,在三个不同的测试区域,这种方法的检测率为95%。从图13可以看出,随着窗口大小的增加,三个系统的检测率都在增加,但当窗口大小超过某个设定的阈值时,人员的不同行为状态会导致CSI的时间差异。我们还注意到,除了在所有区域的区域3测试外,PCA取得了出色的结果,因为区域3距离发射机和接收机很远,导致信号中的人员变化不太明显。

二叉树的先序遍历,中序遍历,后序遍历的非递归C语言实现_如何实现二叉树的先序遍历、中序遍历和后序遍历的非递归算法c语言-程序员宅基地

文章浏览阅读1.4w次,点赞19次,收藏73次。栈的回顾在介绍几种遍历之前,先回顾下栈的概念,他是具有元素先进后出特点的数据结构,通过指针sp++/--进行入栈、出栈。具有典型形象的一个例子就是括号的匹配,即问形如“()(()())())”的序列,括号是否匹配正确?利用栈进行判断时,从头往后扫描,每当遇到一个“(”则入栈一次,而每当遇到一个“)”则出栈一次,最后若栈空则顺利匹配,否则不正确匹配。这个例子非常形象,可以作为一个思考的中介桥梁..._如何实现二叉树的先序遍历、中序遍历和后序遍历的非递归算法c语言

几家大的券商的PB系统以及算法交易概况大致是怎样的?-程序员宅基地

文章浏览阅读1.3k次。PB的定位是托管-清算-交易。目前的PB系统方面的竞争点主要放在了交易环节(毕竟托管和清算没有多大的差异)。目前的pb交易环节的技术提供有恒生、讯投、金证、同花顺等,以满足私募及高净值个人多样化交易和账户集中管理需求。也许有人问了信托、公募基金、保险资管不用pb那是人家有席位或接口等优势。系统直接上O3.2,O3.2就不说了,金融圈里都晓得恒生HOMS/HAMP/Opuls,其实是O3.2精简..._公募 可以用 pb吗

手工配置Oracle 10G EM -程序员宅基地

文章浏览阅读1.4k次。 Enterprise Manager可以使用dbca创建,手工创建,用模版创建等等,当用dbca创建数据库的时候,没有选择“使用Enterprise Manager配置数据库”,造成后来想用em不能使用,必需用到手工配置em才能使用,下面就介绍两种单实例环境实下em配制。第一种方法,用dbca配置em,也是最简单的方法。在命令提示符下输入dbca,出现"Database Configuration Assistant 欢迎使用"界面,点下一步,选择配置数据库,在点下一部,选择要配制em的数据库,然_oracle 10g em

自制工具分享!ArcGIS批量合并GDB、MDB_批量合并gdb数据库-程序员宅基地

文章浏览阅读2.3k次。ArcGIS批量合并数据GDB、MDB_批量合并gdb数据库