如何将数组输出为JSON?
我有以下几点:如何将数组输出为JSON?
@array.inspect
["x1", "x2", "adad"]
我希望能够将其格式化到:
client.send_message(s, m, {:id => "x1", :id => "x2", :id => "adad" })
client.send_message(s, m, ???????)
我怎么能在该@array输出???????空间作为IDS?
感谢
{: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"
已经
这可能是事实,但这正是LinkedIn宝石所采用的方式。关于如何将数组格式化为该类型的输出的任何想法? – AnApprentice 2012-03-03 00:37:45
你能提供一个例子吗? – Zepplock 2012-03-03 00:42:14
当然,什么样的例子? – AnApprentice 2012-03-03 00:42:55
那么通常你可以做这样的事情:
Hash[@array.collect{|i| [:id, i]}]
但是,这将导致{:ID =>“阿达德”},因为第一个元素将冲所有的休息:在红宝石哈希有独特的钥匙。所以我不认为有这样一个非常棒的方法可以做到这一点。
散列的键是唯一的。如果你尝试这样做,你最终只会得到':id'的其中一个值。你确定你没有要求提供一个ID列表吗? – jdl 2012-03-03 00:36:21
这可能是事实,但这就是LinkedIn宝石所采用的方式。关于如何将数组格式化为该类型的输出的任何想法? – AnApprentice 2012-03-03 00:37:59