我很难找到如何在没有转义反斜杠的情况下用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()"
我没有太多的红宝石经验,所以我相信必须有一个聪明或简单的方法来做到这一点。这不需要在JSON字符串中完成,它可以通过修改之后的字符串来完成,但是到目前为止,puts和print保留了我不想要的双转义或非转义结果。
任何帮助都是非常感谢的,非常感谢。
发布于 2021-07-21 21:49:39
由于一些奇怪的原因,JSON允许转义斜杠,尽管它不是一个保留字符。但实际上没有必要逃避它,因为,正如我所写的,它不是一个保留的字符。
所以,你可以
require 'json'
testname = 'ClassName.testSuperImportant'
testplan = {
key: testname.sub('.', '/') + '()'
}
puts JSON.pretty_generate(testplan)
# {
# "key": "ClassName/testSuperImportant()"
# }它实际上和你的文档是一样的,只是有一个不同的表示。
https://stackoverflow.com/questions/68462266
复制相似问题