[英]Ruby to_json encode cyrillic into unicode
I have a hash object with cyrilic text like this我有一个带有像这样的西里尔文本的哈希对象
payload = {'date': "30",'name': 'Тест','phone': "71234567890",'sum': "0",'offer_id': "1"}
I need to convert it to json and send to php api service like this我需要将它转换为 json 并像这样发送到 php api 服务
{"date":"30","name":"\u0422\u0435\u0441\u0442","offer_id":"1","phone":"71234567890","sum":"0"}
But to_json
returns me但是
to_json
返回我
{"date":"30","name":"Тест","offer_id":"1","phone":"71234567890","sum":"0"}
How do I encode cyrilic into unicode in that case?在这种情况下,如何将 cyrilic 编码为 unicode? Do I need to pass options to
to_json
method?我需要将选项传递给
to_json
方法吗?
There definitely should be a more elegant solution, but with String#dump
the below would work.肯定应该有一个更优雅的解决方案,但是使用
String#dump
使用下面的方法。
payload.to_json.dump.
gsub('\\"', '"').
sub(/\A\s*"\s*|\s*"\s*\z/, '')
Check:查看:
require 'digest/md5'
require 'json'
payload = {'date': "30",'name': 'Тест', 'offer_id': "1", 'phone': "71234567890",'sum': "0",}
expected_json = '{"date":"30","name":"\u0422\u0435\u0441\u0442","offer_id":"1","phone":"71234567890","sum":"0"}'
dumped_json =
payload.to_json.dump.
gsub('\\"', '"').
sub(/\A\s*"\s*|\s*"\s*\z/, '')
puts expected_json
puts
puts dumped_json
puts
puts expected_json == dumped_json
puts Digest::MD5.hexdigest(expected_json)
puts Digest::MD5.hexdigest(dumped_json)
Please be aware that there is no guarantee in the order of elements in the JSON, so checking MD5 is generally a bad idea.请注意,JSON 中的元素顺序无法保证,因此检查 MD5 通常是一个坏主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.