json - Ruby to_json 将西里尔文编码为 unicode
问题描述
我有一个像这样的西里尔文字的哈希对象
payload = {'date': "30",'name': 'Тест','phone': "71234567890",'sum': "0",'offer_id': "1"}
我需要将其转换为 json 并像这样发送到 php api 服务
{"date":"30","name":"\u0422\u0435\u0441\u0442","offer_id":"1","phone":"71234567890","sum":"0"}
但to_json
归还我
{"date":"30","name":"Тест","offer_id":"1","phone":"71234567890","sum":"0"}
在这种情况下,如何将西里尔语编码为 unicode?我需要将选项传递给to_json
方法吗?
解决方案
肯定应该有一个更优雅的解决方案,但String#dump
下面会起作用。
payload.to_json.dump.
gsub('\\"', '"').
sub(/\A\s*"\s*|\s*"\s*\z/, '')
查看:
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)
请注意,JSON 中的元素顺序无法保证,因此检查 MD5 通常是个坏主意。
推荐阅读
- vb.net - 如何绑定并显示多折线图形成?
- javascript - 我可以在 package.json 中插入用户消息吗?
- jquery - Select2 v4 和 Bootstrap v4 - 缺少下拉菜单
- python - 在熊猫数据框中计算点之间最短(欧几里得)距离的最快方法
- c - C rand() 的问题
- visual-studio-code - 在 tasks.json 中使用“命令”类型的输入
- c# - 如何在 C# 中生成 .proto 文件或使用“Code First gRPC”
- c# - 无法打开第二个表格
- java - 如何将变量保存在循环中以便以后再次使用?
- powershell - IIS 10/Powershell - 如何“浏览” PSPath?