尝试使用 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。对于有效负载的编码,您应该使用 CGI
或 Base64
。
关于ruby - Json 到 url 编码 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948918/