对于此json结构:
{
"a_path": {
"b_path": [
{
"id": 1,
"name": "a"
},
{
"id": 2,
"name": "b"
}
]
}
}
想将id
元素删除为:
{
"a_path": {
"b_path": [
{
"name": "a"
},
{
"name": "b"
}
]
}
}
有没有好的方法?我尝试过:
$json_data = JSON.parse(response)["b_path"][0].delete("id")
但是得到了这个结果:
"a_path": "1"
答案 0 :(得分:3)
即使.delete
将返回突变的哈希(不返回,它也会返回已删除的值),您仍在分配$json_data = JSON.parse(response)["b_path"][0]
。
只需分配基本哈希,然后使用.each
对其进行循环变异即可。
json_data = JSON.parse(response)
json_data['a_path']['b_path'].each { |h| h.delete('id') }
json_data
# => the expected hash