You need to enable JavaScript to run this app. 如何用Ruby编写无多余转义的JSON文件以适配Apple xctestplan格式
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ruby编写无多余转义的JSON文件以适配Apple xctestplan格式

问题原因

Ruby标准JSON库默认存在两个行为,共同导致了你遇到的问题:

  1. 不会主动转义正斜杠/,所以直接生成JSON时只会输出普通斜杠
  2. 会自动转义字符串中的反斜杠,所以你提前在字符串中加入的\会被转义成\\,最终出现双重转义的\\/效果

解决方案

方案1:使用JSON库自带的转义斜杠参数(推荐)

Ruby的json gem原生支持escape_slash参数,开启后会自动将所有正斜杠转义为\/格式,你不需要手动处理反斜杠,直接把.替换为普通/即可:

require 'json'

testname = "ClassName.testSuperImportant"

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

# 传入escape_slash参数开启正斜杠转义
puts JSON.pretty_generate(testplan, escape_slash: true)

运行后直接输出符合要求的结果:

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

方案2:生成JSON后全局替换

如果因为环境限制无法使用上述参数,可以先生成普通JSON字符串,再全局替换正斜杠:

require 'json'

testname = "ClassName.testSuperImportant"

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

json_str = JSON.pretty_generate(testplan)
# 把所有普通斜杠替换为转义后的格式
puts json_str.gsub('/', '\/')

输出效果和方案1完全一致。


内容的提问来源于stack exchange,提问作者Tristian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 00:39:02