【问题标题】:Short way to turn JSON array data into a string in ruby在 ruby​​ 中将 JSON 数组数据转换为字符串的快捷方式
【发布时间】:2020-07-02 12:59:35
【问题描述】:

我从 API 获取一些数据并使用 apidata = JSON.parse(response) 解析 JSON。它看起来像这样:

> puts(apidata['values'])
{"a"=>{"value"=>"..."}, "b"=>"..."}
{"a"=>{"value"=>"..."}, "b"=>"..."}
{"a"=>{"value"=>"..."}, "b"=>"..."}
{"a"=>{"value"=>"..."}, "b"=>"..."}
[...]

我想创建一个数组,在所有元素中只包含b 的值,所以我可以将.join() 转换为一个字符串。

这可行:

array = Array.new
for item in apidata['values']
    array.push(item['b'])
end
string = array.join(',')

但是对于一个相当简单的任务来说似乎有很多代码。有没有更短的方法来做同样的事情?

【问题讨论】:

  • 在 Ruby 中,我们避开 for 并使用 eachmap。为什么是一个不同的问题,并且在这里和互联网上都有很好的介绍。不要使用puts 来显示apidata['values'],而是将其分解为几个元素并将实际定义放入问题中。否则会迫使我们重建变量/数组,这会浪费我们的时间并导致响应的可变性,这是不受欢迎的。 "MCVE"

标签: arrays json ruby


【解决方案1】:

当您想从一个数组中提取元素到另一个数组中时,一个常见的 Ruby 习惯用法是Array#map,而不是自己创建一个新数组并复制条目。

apidata['values'].map { |h| h['b'] }.join(',')

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多