【问题标题】:Rails build JSON object from hash and arrays via modelRails 通过模型从哈希和数组构建 JSON 对象
【发布时间】:2016-01-11 23:04:58
【问题描述】:

我正在尝试将数据发布到 API,API 正在请求这样的 JSON 请求

{
    "blacklists": {
        "list1": [{
            "id": "123",
            "find": "foo",
            "type": "text"
        }],
        "list2": [{
            "id": "321",
            "find": "bar",
            "type": "text"
        }]
    }
}

我的问题是构建一个带有代表上述内容的散列和数组的 JSON。

这是我目前的代码:

@blacklist = {}
@bl = {}

key_category = KeywordCategory.where("global_list = ? OR unit_id = ?",1,1)

key_category.each do |kc|

bl_name = kc.name # <- "list1, list2 etc."

kc.keywords.each do |kw|
 @keywords = {}
 @keywords['id'] = kw.id
 @keywords['find'] = kw.data
 @keywords['type'] = kw.is_regexp ? "regexp" : "text"
 @bl.merge!(@keywords)
end

end

@blacklist['blacklist'] = @bl

return @blacklist.to_json

这段代码给了我这个 JSON(这有点来自 API 想要的):

{
"blacklists":
{"id":123,
"find":"foo",
"type":"text"
}
}

如何更改我的代码,使其根据顶级 JSON 输出?

【问题讨论】:

  • 不明白你有什么和你需要什么,请澄清
  • 我需要得到一个 JSON 字符串,与我提供的完全一样。试图实现我已经编写了下面的代码,但问题是它没有像上面那样创建字符串,而且键也会重复。
  • 描述您在代码中所做的事情、关联等。更详细。不在 cmets 中,只需编辑问题
  • 好的,我已经编辑了问题

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2


【解决方案1】:

试试这样的:

@blacklist = {}
@bl = {}

key_category = KeywordCategory.where("global_list = ? OR unit_id = ?",1,1)

key_category.each do |kc|

  tmparray = []

  kc.keywords.each do |kw|
   @keyword = { id: kw.id, find: kw.data, type: kw.is_regexp ? 'regexp' : 'text" }
   tmparray << @keyword
  end
   @bl.merge!(kc.name: tmparray)    
end

@blacklist['blacklist'] = @bl

return @blacklist.to_json

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 2021-12-03
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
相关资源
最近更新 更多