ruby - Json 到 url 编码 ruby

标签 ruby json url uri url-encoding

尝试使用 URI 库以正确的格式为 Eventbrite 批处理端点生成 JSON,但无法从 URI 库获取正确的编码。

url = URI.escape('{"method":"GET", "relative_url":"users/me"},{"method":"GET", "relative_url":"users/me/owned_events/"},{"method":"GET", "relative_url":"users/me/owned_events/?page=2"}')

=>%7B%22method%22:%22GET%22,%20%22relative_url%22:%22users/me%22%7D,
%7B%22method%22:%22GET%22,%20%22relative_url%22:%22users/me/owned_events/%22%7D,
%7B%22method%22:%22GET%22,%20%22relative_url%22:%22users/me/owned_events/?page=2%22%7D

这是需要的编码:

%5B+++++%7B%22method%22%3A%22GET%22%2C+%22relative_url%22%3A%22users%2Fme
%22%7D%2C+++++%7B%22method%22%3A%22GET%22%2C+%22relative_url%22%3A
%22users%2Fme%2Fowned_events%2F%22%7D%2C+++++%7B%22method%22%3A%22GET
%22%2C+%22relative_url%22%3A%22users%2Fme%2Fowned_events%2F%3Fpage%3D2%22%7D+%5D

最佳答案

我相信您忘记将 JSON 对象括在数组中(注意方括号):

CGI.escape('[{"method":"GET", "relative_url":"users/me"},{"method":"GET", "relative_url":"users/me/owned_events/"},{"method":"GET", "relative_url":"users/me/owned_events/?page=2"}]')

结果:

%5B%7B%22method%22%3A%22GET%22%2C+%22relative_url%22%3A%22users%2Fme%22%7D%2C%7B%22method%22%3A%22GET%22%2C+%22relative_url%22%3A%22users%2Fme%2Fowned_events%2F%22%7D%2C%7B%22method%22%3A%22GET%22%2C+%22relative_url%22%3A%22users%2Fme%2Fowned_events%2F%3Fpage%3D2%22%7D%5D

这与您想要的结果相同,留出或留出空格。

顺便说一句,我不确定您为什么要使用 URI。据我所知,URI 应该只是 eventbriteapi.com/v3/batch 。基于他们的documentation ,您发送的有效负载似乎应该通过 POST 请求发送到此 URI。对于有效负载的编码,您应该使用 CGIBase64

关于ruby - Json 到 url 编码 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948918/

相关文章:

api - 从 Magento API 获取产品链接

ruby-on-rails - 重定向 ruby​​ 脚本的 shell 输出

javascript - D3 如何正确获取json对象内部的键值

json - 将 json 传递到 AWS CLI 无效的 JSON

php - 如何在不使用 URL 中的 .php 的情况下访问 php 页面

magento - 如何修复 Magento 网站的 URL 三角锁?

ruby - 为什么在 Ruby 中获取返回零

ruby - 为什么从代码块中的双拼参数调用 `to_ary`?

ruby-on-rails - aws::S3 在::Resource 上未定义方法 'with_prefix'

c# - 使用 JsonProperty 将 JSON 绑定(bind)到模型属性