在散列到 json 的转换期间格式化散列中 date_time 的数组
Format array of date_time in hash during hash to json conversion
所以我有一个 class,其哈希表示如下所示。
{"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 并且更改它会很糟糕
- 这不是 Ruby 中的
Time
对象的字符串表示形式,因此无论如何您都需要对其进行字符串格式化
相反,您必须修改 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
以获得您想要的结果。
所以我有一个 class,其哈希表示如下所示。
{"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
的这一部分,因为:
- 您需要为多个其他 类 操作
- 那些
Integers
是有效的 JSON 并且更改它会很糟糕 - 这不是 Ruby 中的
Time
对象的字符串表示形式,因此无论如何您都需要对其进行字符串格式化
#to_json
相反,您必须修改 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
以获得您想要的结果。