【问题标题】:Rails: fastest function to extract json field and convert to arrayRails:提取json字段并转换为数组的最快函数
【发布时间】:2015-11-20 04:30:19
【问题描述】:

我有一个 json 对象如下,它是输入。

[
{"feild1":"val11","field2":"val12"},
{"feild1":"val21","field2":"val22"},
{"feild1":"val31","field2":"val32"}
]

我想在一个数组对象中输出只针对feild1,如下:

array_for_feild_one =  ["val11", "val21", "val31"]

我知道我可以循环遍历整个 json 对象,但是我没有看到 JSON 对象的意义,当我最终必须使用循环时,键和值的用途是什么,是不是有更好的方法?

到目前为止,我已经尝试过:

json_obj.each do |obj|

    my_array << obj['field1']
end

编辑:

完整代码如下:

json_obj = JSON.parse('[
{"feild1":"val11","field2":"val12"},
{"feild1":"val21","field2":"val22"},
{"feild1":"val31","field2":"val32"}
]')
my_array = []
json_obj.each do |obj| 
        my_array << obj['field1']
end
puts my_array.inspect

【问题讨论】:

  • 你可以试试json_obj.collect{|a| a["feild1"]}
  • 谢谢,它有效.. 还有其他选择吗?
  • 是的,在 ruby​​ 中有很多迭代器可用,例如 map,collect 你也可以使用这个

标签: ruby-on-rails arrays json


【解决方案1】:

您可以在 ruby​​ 中使用collect 方法尝试以下方式:

json_obj = JSON.parse('[
{"feild1":"val11","field2":"val12"},
{"feild1":"val21","field2":"val22"},
{"feild1":"val31","field2":"val32"}
]')
my_array = json_obj.collect{|a| a["feild1"]}
puts my_array.inspect

【讨论】:

    【解决方案2】:

    还有另一种方法可以在一行代码中完成;)

    ActiveSupport::JSON.decode(your_json).map{|a| a["feild1"]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2017-05-12
      • 2015-04-04
      • 2018-01-01
      • 1970-01-01
      • 2021-10-27
      相关资源
      最近更新 更多