将 Ruby 哈希转换为 JSON(不带转义字符)

Posted

技术标签:

【中文标题】将 Ruby 哈希转换为 JSON(不带转义字符)【英文标题】:Convert a Ruby Hash into JSON (without escape characters) 【发布时间】:2014-10-20 19:43:22 【问题描述】:

我有一个哈希:

my_hash = "bob.johnson@example.com"=>"first"=>"Bob", "last"=>"Johnson", "lisa.dell@example.com"=>"first"=>"Lisa", "last"=>"Dell"

当我尝试用my_hash.to_json 对其进行序列化时,我得到了:

"\"bob.johnson@example.com\":\"first\":\"Bob\",\"last\":\"Johnson\",\"lisa.dell@example.com\":\"first\":\"Lisa\",\"last\":\"Dell\""

如何在不获取转义字符的情况下将 Hash 转换为 JSON 格式?

【问题讨论】:

【参考方案1】:

这些转义字符在 Ruby String 中转义 "(您的 my_hash.to_json 输出)。如果你这样做了

puts my_hash.to_json

您会看到实际上这些转义字符并未添加到输出字符串中。

【讨论】:

@Numbers 是的,你应该是。 你需要这个库,它在 ruby​​ 标准库中,不在核心中:require 'json' 这是给@Numbers 的提示,而不是给你的。 如果我不想打印这个字符串,这将不起作用,而只是将它发送到没有转义字符的其他服务。 Ruby 的“puts”似乎删除了转义字符,但如果你传递 json,接收器会用反斜杠等弄得一团糟(显示在接收器的错误日志中收到的参数中)。如果您使用“as json”,它不会造成反斜杠混乱,当您想保留整数、小数等时,它会将所有值转换为字符串。我正在手动构建 JSON 以避免这两种损坏的方法。 ruby 中是否有“转换为 json”,它只是发送你给它的“作为 json”?

以上是关于将 Ruby 哈希转换为 JSON(不带转义字符)的主要内容,如果未能解决你的问题,请参考以下文章

将 json 格式的键值对转换为以符号为键的 ruby​​ 哈希的最佳方法是啥?

ruby 将哈希值转换为排序的字符串数组,以便与另一个哈希值进行比较

Rails:如何将对象数组的哈希转换为 json

在Ruby中将嵌套哈希键从CamelCase转换为snake_case

Python - 将带有转义字符的字符串转换为 json

将字符串放入不带转义字符的 curl 命令中