【问题标题】:How to output an Array as JSON?如何将数组输出为 JSON?
【发布时间】:2012-03-21 11:29:02
【问题描述】:

我有以下几点:

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

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

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

我怎样才能让@array 输出在???????空间作为 ids?

谢谢

【问题讨论】:

  • 散列的键是唯一的。如果你尝试这个,你最终只会得到:id 的这些值之一。您确定您不是要求提供 ID 列表吗?
  • 这可能是真的,但这就是 LinkedIn gem 采用的方式。关于如何将数组格式化为那种类型的输出有什么想法吗?

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


【解决方案1】:

{: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 gem 采用的方式。关于如何将数组格式化为那种类型的输出有什么想法吗?
  • 你能举个例子吗?
  • 没问题,什么样的例子?
  • 他们有 [{:id => 1234},{:id => 5678}],你有 {:id => "x1", :id => "x2" }`。他们的是一个数组或散列,你的是一个格式错误的散列。
【解决方案2】:

通常你可以这样做:

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

但这会导致 {:id => "adad"} 因为第一个元素会冲击所有其余元素:ruby 中的哈希具有唯一键。所以我不认为有一种超级棒的方式来做这件事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2023-04-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多