【问题标题】:How do I create a json object in ROR without it creating a multi-dimensional array如何在 ROR 中创建 json 对象而不创建多维数组
【发布时间】:2012-05-23 17:04:27
【问题描述】:

例如,如果我尝试创建这样的东西

@json = Array.new

for x in 0..1
    y = 2
    @json << ["Id" => x, "Label" => y]
 end
respond_to do |format|
  format.html # index.html.erb
  format.json { render :json => @nodes }
end

这是返回的 JSON:

[[{"Id":0,"Label":2}], [{"Id":1,"Label":2}]]

然后如果我想在java脚本中访问它,我必须做array[i][0].id来找到id。当我应该能够做array[i].id 来获取ID 时。

有什么建议吗?

【问题讨论】:

  • 如果你想写.id 为什么要使用大写Id 来构建哈希?

标签: javascript ruby-on-rails ruby json


【解决方案1】:

您使用[] 构建哈希,您必须使用{}。并且不要初始化 + 循环 + 推送,这不是惯用的 Ruby。我会写:

@json = (0..1).map { |id| {"Id" => id, "Label" => 2} }
#=> [{"Id"=>0, "Label"=>2}, {"Id"=>1, "Label"=>2}]

【讨论】:

    【解决方案2】:

    @json &lt;&lt; {"Id" =&gt; x, "Label" =&gt; y} 怎么样?

    【讨论】:

    • 在这种特殊情况下,我发现 Ruby 有点令人困惑。恕我直言["Id" =&gt; x, "Label" =&gt; y] 应该抛出异常而不是将其转换为包含哈希的列表。
    • @freakish:这是一项功能,因此您可以以紧凑的方式编写哈希数组。说实话我也不喜欢。
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2014-08-14
    • 2022-01-02
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多