如何使用ruby从json中删除元素?

时间:2018-10-10 10:14:00

标签: arrays json ruby

对于此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"

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