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

zse*_*cho -2 ruby arrays json

对于这个 json 结构:

{
  "a_path": {
    "b_path": [
      {
        "id": 1,
        "name": "a"
      },
      {
        "id": 2,
        "name": "b"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

想要删除id元素:

{
    "a_path": {
      "b_path": [
        {
          "name": "a"
        },
        {
          "name": "b"
        }
      ]
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么好的办法吗?我努力了:

$json_data = JSON.parse(response)["b_path"][0].delete("id")
Run Code Online (Sandbox Code Playgroud)

但得到这个结果:

"a_path": "1"
Run Code Online (Sandbox Code Playgroud)

rew*_*ten 5

即使.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
Run Code Online (Sandbox Code Playgroud)