【问题标题】:How do I make a single element JSON array using the Rails XML Builder?如何使用 Rails XML Builder 创建单元素 JSON 数组?
【发布时间】:2011-03-25 14:22:39
【问题描述】:

我将 Rails 应用程序用作 JSON API 服务。有一个字段可以保存一个或两个字符串。下面是我如何在 .xml.builder 文件中创建这个 JSON 元素,从扁平化的哈希中获取信息:

if hash['advertisements']
    hash['advertisements'].each do |ad|
        xml.advertisements(ad)
    end
end

当哈希中有两个字符串时,生成的 JSON 是一个数组:

"advertisements": [
    "ad1.png",
    "ad2.png"
]

但是当只有一个字符串时,元素只是一个字符串:

"advertisements": "ad1.png"

有没有一种方法可以强制 XML 构建器创建一个 JSON 数组,即使哈希中只有一个字符串?另请注意,如果原始哈希中没有广告,则应该没有呈现 json 数组。

【问题讨论】:

  • 为什么不直接在哈希上调用to_json
  • 该服务实际上将生成器生成的 XML 转换为哈希,然后使用 to_json 呈现它。不过我确实找到了解决方案,我在下面发布了

标签: ruby-on-rails ruby json ruby-on-rails-2


【解决方案1】:

我认为最好和更简单的方法是使用 JSON 构建器!

gem install json

第二个想法是使用您的 ORM 序列化程序。这样您就不必处理所有用例。

【讨论】:

    【解决方案2】:

    好笑。我意识到该应用程序使用 XML 构建器模板,将其转换为哈希,然后将其呈现为 json。 (我没有开发这个......)所以我不得不在哈希级别使用

    hash['advertisements'] = Array.hash['advertisements']
    

    成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2010-11-07
      • 2010-12-29
      • 1970-01-01
      • 2021-08-11
      • 2010-12-22
      相关资源
      最近更新 更多