【发布时间】:2015-08-16 02:21:31
【问题描述】:
在我的应用程序中,我有控制器,它对作为 JSON 接收的请求执行多项操作,但有时我以 x-www-form-urlencoded 形式接收请求。
我想在控制器操作开始时将其转换为 JSON。
例如我想转换:
%7B%0D%0A++%22action%22%3A+%22new_pet%22%2C%0D%0A++%22content%22%3A+%7B%0D%0A++++%220%22%3A+%7B%0D%0A++++++%22name%22%3A+%22Amigo%22%2C%0D%0A++++++%22sex%22%3A+%22male%22%2C%0D%0A++++++%22owner%22%3A+%227449903%22%2C%0D%0A++++++%22type%22%3A+%22dog%22%0D%0A++++%7D%0D%0A++%7D%2C%0D%0A++%22controller%22%3A+%22animal%22%0D%0A%7D
到:
{
"action": "new_pet",
"content": {
"0": {
"name": "Amigo",
"sex": "male",
"owner": "7449903",
"type": "dog"
}
},
"controller": "animal"
}
【问题讨论】:
-
您的字符串格式错误吗?我在您的字符串上运行
puts puts CGI.unescape(s).tr('=', ':').tr('&', ' '),发现它不是有效的 JSON。它错过了最后一个}。 -
这看起来不像一个有效的 x-www-form-urlencoded 字符串。
-
对不起,我的其他客户端编码器转换错误。我用有效的 x-www-form-urlencoded 字符串更新了帖子
标签: ruby json ruby-on-rails-3