如何将数组输出为JSON?

时间:2012-03-03 00:15:05

标签: ruby-on-rails ruby arrays ruby-on-rails-3 json

我有以下内容:

@array.inspect
["x1", "x2", "adad"]

我希望能够将其格式化为:

client.send_message(s, m, {:id => "x1", :id => "x2", :id => "adad" })
client.send_message(s, m, ???????)

如何在???????中显示@array输出?空间作为ids?

由于

2 个答案:

答案 0 :(得分:11)

由于您发生密钥冲突,

{:id => "x1", :id => "x2", :id => "adad" }不是有效哈希

应该看起来像:

{
  "ids": ["x1", "x2", "x3"]
}

更新

@a = ["x1", "x2", "adad"]
@b = @a.map { |e| {:id => e} }

然后,您可以执行b.to_json,假设您已经完成了require "json"

答案 1 :(得分:2)

通常你可以这样做:

Hash[@array.collect{|i| [:id, i]}]

但这会导致{:id => “adad”}因为第一个元素将冲击所有其余元素:ruby中的哈希值具有唯一键。所以我认为没有超级棒的方法可以随意做到这一点。