微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Ruby

如何解决使用 Ruby

我正在努力弄清楚如何在没有转义反斜杠的情况下用 ruby​​ 编写 JSON 文件,我需要生成以下 JSON 内容,以便匹配 Apple 的 xctestplan 格式:

{
   "key": "ClassName\/testSuperImportant()"
}

我有以下(简化的)ruby 代码,导致双转义反斜杠:

require 'json'

testname = "ClassName.testSuperImportant"

testplan = {
  :key => testname.sub('.',"\\/") + "()"
}

puts JSON.pretty_generate(testplan)

输出

{
  "key": "ClassName\\/testSuperImportant()"
}

这些 "\/"'\/' 的任何变体都只会产生一个像这样的斜线:"ClassName/testSuperImportant()"

我没有太多的 ruby​​ 经验,所以我确信必须有一种聪明或简单的方法来做到这一点。它不必在 JSON stringer 中完成,它可以通过之后修改字符串来完成,但到目前为止 putsprint 保留了我不想要的双重或非转义结果。

感谢任何帮助,非常感谢。

解决方法

出于某种奇怪的原因,JSON 允许对斜杠进行转义,即使它不是保留字符。但实际上没有必要对它进行转义,因为正如我所写的,它不是一个保留字符。

所以,你可以这样做

require 'json'

testname = 'ClassName.testSuperImportant'

testplan = {
  key: testname.sub('.','/') + '()'
}

puts JSON.pretty_generate(testplan)
# {
#   "key": "ClassName/testSuperImportant()"
# }

这实际上与您的文档相同,只是具有不同的表示形式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。