【问题标题】:How to remove an element from a json with ruby?如何使用 ruby​​ 从 json 中删除元素?
【发布时间】:2019-03-15 05:23:58
【问题描述】:

对于这个 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"

【问题讨论】:

  • 您的输入不是有效的 ruby​​ 或 json。
  • @AlekseiMatiushkin 抱歉,已编辑。
  • @AlekseiMatiushkin:嗯,昵称怎么了? :)
  • @SergioTulentsev 那是一个挑战:我决定在我获得金牌elixir 徽章后立即将其转换为使用我的真实姓名。
  • @AlekseiMatiushkin 然后坚持使用长生不老药,然后让普通人在红宝石上获得一些代表... ;)

标签: arrays json ruby


【解决方案1】:

即使.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

【讨论】:

    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 2022-08-11
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多