【发布时间】:2014-08-11 14:28:07
【问题描述】:
什么是清理(转换)格式不正确的 JSON 哈希数组的一种干净且惯用的方法,其结构如下所示,假设哈希中的键总是格式正确?
在此示例中,邮政编码和电话号码的格式不同,并且只有一个哈希值中存在一个键/值对 street_address。我想要做的是将所有邮政编码传递给一个解析邮政编码的助手,将电话号码传递给电话号码清理器,并将街道地址(如果存在)传递给它自己的解析器。我想保留 JSON 数组的结构,只是将值标准化。
[{ "name": "Person 1",
"postal_code": "VXXXS",
"phone_number": "(111)093910",
},
{ "name": "Person 2",
"postal_code": "VX-XXS",
"phone_number": "++(111)093139",
},
{ "name": "Person 3",
"street_address": "1 Something Rd",
}]
我正在考虑遍历每个数组元素,然后使用如下 switch 语句:
json.each do |hash|
hash.keys do |key|
case key
when "postal_code"
hash[key] = postal_code_parser(hash[key])
when "street_address"
hash[key] = street_address_parser(hash[key])
when "phone_number"
hash[key] = phone_number_parser(hash[key])
end
end
end
但这有点难看,我认为这可能是一个常见的问题,以至于存在一种干净且更有效的方法来解决它。我仍然觉得红宝石势不可挡。
【问题讨论】:
标签: ruby-on-rails ruby json