ruby - 在哈希到 json 转换过程中格式化 date_time 数组
问题描述
所以我有一个类,其哈希表示看起来像这样。
{"dateTime"=>[1484719381, 1484719381], "dateTime1"=>[1484719381, 1484719381]}
这里的dateTime是一个 unix 格式的 dateTime 数组。
我正在尝试将此哈希转换为我使用 hash.to_json 的 json_string 的等效项。调用 to_json 时有什么方法可以修改 date_time 的格式。生成的 json 应该如下所示
'{"dateTime1":["2017-01-18T06:03:01+00:00","2017-01-18T06:03:01+00:00"]}'
基本上我正在寻找一个可以在 hash.to_json 期间调用的实现。
解决方案
你不能在Hash#to_json
不严重破坏该方法的情况下完成这一部分,因为:
- 您需要
#to_json
为多个其他类操作 - 那些
Integers
是有效的JSON,改变它会很糟糕 - 这不是
Time
Ruby 中对象的字符串表示形式,因此无论如何您都需要对其进行字符串格式化
相反,您必须修改Hash
值以以所需的方式表示,例如
h= {"dateTime"=>[1484719381, 14848723546], "dateTime1"=>[1484234567, 1484719381]}
h.transform_values do |v|
v.map do |int|
Time.at(int, in: '+00:00').strftime("%Y-%m-%dT%H:%M:%S%z")
end
end
#=> {"dateTime"=>[
# "2017-01-18T06:03:01+0000",
# "2440-07-15T05:25:46+0000"],
# "dateTime1"=>[
# "2017-01-12T15:22:47+0000",
# "2017-01-18T06:03:01+0000"]}
然后,您可以调用to_json
生成的对象以获得所需的结果。
推荐阅读
- python - Dask 连接导致内存错误,当 pandas 连接不用于相同的文件时
- sql - 如何从多个列创建一个 json 列?
- excel - 如何按多列比较两个数组(行与行)
- python - 在字典内的列表中定位元素的索引值
- c# - 如何在 Ggrapevine 3.1 中使用 SSL
- ios - ARKit/ARHitTestResult中worldTransform和localTransform的区别
- html - 对比对比
- android - datepicker 不保存选定的日期
- javascript - 将状态传递给父组件
- tableau-api - 如何在画面中手动调整字段大小而其他人不自动调整大小?