Rails 4使用JBuilder构建带有自定义键的JSON

时间:2015-10-12 20:16:33

标签: ruby-on-rails-4 jbuilder

我使用JBuilder构建JSON响应,现在它看起来像:

 json.array!(@work_posts) do |work_post|
 json.extract! work_post, :post_title, :post_body, :salary, :urgently, :contact, :created_at, :updated_at
 json.contact do
   json.emails work_post.contact.emails
   json.phones work_post.contact.phones
   json.links work_post.contact.links
 end
end

响应如下:

[
  {
    "post_title": "Some work",
    "post_body": "work description",
    "salary": "5$/hour",
    "urgently": true,
    "contact": {
         "emails": "",
         "phones": "",
         "links": ""
              },
    "created_at": "2015-10-11T23:46:17.979+05:00",
    "updated_at": "2015-10-11T23:46:17.979+05:00"
    }
]

我想添加cutom键以使响应看起来像:

"result" : "success",   
"data" : [
  {
    "post_title": "Some work",
    "post_body": "work description",
    "salary": "5$/hour",
    "urgently": true,
    "contact": {
         "emails": "",
         "phones": "",
         "links": ""
              },
    "created_at": "2015-10-11T23:46:17.979+05:00",
    "updated_at": "2015-10-11T23:46:17.979+05:00"
    }
]

我该怎么做才能实现这个目标?

1 个答案:

答案 0 :(得分:1)

我在任何地方都没有看到这样的问题,我终于实现了我想要的。希望它对某人有用。所以答案非常明显:我不应该使用json.array!而应该使用我需要的东西=> json.data然后我只需要将json.result "success"放在上面。结果将是:

"result" : "success",   
"data" : [
 {
    "post_title": "Some work",
    "post_body": "work description",
    "salary": "5$/hour",
    "urgently": true,
    "contact": {
         "emails": "",
         "phones": "",
         "links": ""
          },
    "created_at": "2015-10-11T23:46:17.979+05:00",
    "updated_at": "2015-10-11T23:46:17.979+05:00"
  }
]
相关问题