【问题标题】:How to get json/hash with that same keys and convert it json如何使用相同的键获取 json/hash 并将其转换为 json
【发布时间】:2018-07-13 11:42:09
【问题描述】:

我在将带有哈希的数组转换为 json 时遇到问题。但是我需要在具有不同值的哈希中具有相同的键。

elements = []
 portal_order_items.each do |product|
 elements << {"Kod":product.Kod,"Cena"=>product.price,"Ilosc"=>product.quantity}
 end

我得到这样的东西:

[{:Kod=>"M06006P0232", "Cena"=>"2.0", "Ilosc"=>1}, {:Kod=>"M06006P0019", "Cena"=>"53.0", "Ilosc"=>1}]

如何将其转换为 json 格式:

{"Kod":"M06006P0232", "Ilosc":1, "Cena":2.0,"Kod":"M06006P0019", "Ilosc":22, "Cena":53.0}

它必须是一个 json.. 有人知道我的问题的解决方案吗?

【问题讨论】:

  • 你是如何转换成 JSON 的?我在控制台中使用to_jsonJSON.dump 都可以正常工作。
  • 你没看到?它的 1 个带有重复键的 json - to_json 提供给哈希..
  • 我觉得很好。但是,在我的控制台中使用 to_jsonJSON.dump,我无法复制您的问题。

标签: ruby-on-rails json ruby hash


【解决方案1】:

你可以像这样生成你需要的字符串:

portal_order_items.map { |item| JSON.generate(item) }.join(',').gsub(/},{/, ',')

但是,请注意此 JSON 具有重复的键。虽然这技术上是正确的(没有明确要求 JSON 文档具有唯一键),但大多数库在解析时只会保留最后一个键的值。这很可能不是您想要的。

【讨论】:

    【解决方案2】:

    您应该能够使用.map 编辑您的portal_order_items 数组,然后您可以使用.to_json 方法转换为json。

    请参阅 JSON here 的文档。

    portal_order_items.map do |product|
      {"Kod":product.Kod,"Cena"=>product.price,"Ilosc"=>product.quantity}
    end.to_json
    

    【讨论】:

      猜你喜欢
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多