将一个json字符串转换成URL编码字符串(Rails)

4

我如何转换这个json变量

email = {"email":"name@gmail.com"}

将这个字符串编码成什么样子?
%7B%22email%22%3A%22name%40gmail.com%22%7D
2个回答

3

当然可以使用这里展示的uri库:这里

[2] pry(main)> require 'uri'
=> true
[3] pry(main)> URI.encode('{"email":"name@gmail.com"}')
=> "%7B%22email%22:%22name@gmail.com%22%7D"

这在处理JSON数组时不起作用。请参见我的答案 - Yarin

1
使用 CGI.escape,而不是 URI.encode/escape。URI.encode 不会转义 JSON 数组的括号。
emails = '{"list_1":[{"Jim":"jim@gmail.com"},{"Joe":"joe@gmail.com"}]}'
> URI::encode(emails)
=> "%7B%22list_1%22:[%7B%22Jim%22:%22jim@gmail.com%22%7D,%7B%22Joe%22:%22joe@gmail.com%22%7D]%7D"
> CGI.escape(emails)
=> "%7B%22list_1%22%3A%5B%7B%22Jim%22%3A%22jim%40gmail.com%22%7D%2C%7B%22Joe%22%3A%22joe%40gmail.com%22%7D%5D%7D"

ruby - URI.escape和CGI.escape有什么区别?- Stack Overflow


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接