【发布时间】:2016-04-02 13:29:04
【问题描述】:
我正在关注一些 API 文档,作为帖子的一部分,我需要生成一些这种格式的 JSON:
{
"panelist": {
"email_address": "test@example.com",
"gender": "m",
"postal_code": "12345",
"year_of_birth": 1997,
“variables”: [1000,1001]
}
}
在 Rails 中生成它的最佳方法是什么(我没有Panelist 模型,而这些东西大部分都存储在我的Appuser 模型中,所以gender 实际上是@appuser.gender)。
过去我只是做过类似的事情
params = {
"gender" => "m",
"postal_code" => "12345"
}
然后在我的请求中set_form_data:
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(params)
response = http.request(request)
但是panelist 中的嵌套参数让我失望了。
我确实尝试过使用to_json 来简单地做到这一点:
appuser = { "panelist" => { "email" => "test@example.com", "zip" => "12345" } }
appuser.to_json
=> "{\"panelist\":{\"email\":\"test@example.com\",\"zip\":\"12345\"}}"
但似乎我或多或少只是对 json 进行硬编码。我想我可以做到,但感觉可能有更简单的方法。
【问题讨论】:
-
您打算多久发送一次这种格式的数据?如果不止一次,我会考虑为它制作模型。
-
很常见。我会研究新模型。由于数据已经存在于 appuser 模型中,因此我最初并不打算这样做。
-
如果这个模型是 AppUser 模型的一个子集,那么 AppUser 可以有一个返回其中之一的方法。然后你只需调用 AppUser.to_special_model.to_json
-
啊,好主意! :)
标签: ruby-on-rails json