PowerShell转换含JSON字符串的PS对象为JSON时保留原字符串值
解决PowerShell中嵌套JSON转义问题
问题原因
你当前代码里的$JSONStringValue是纯字符串类型,ConvertTo-Json处理字符串时会严格遵循JSON规范:自动转义字符串里的双引号、换行符等特殊字符,所以输出会出现\"和\n。如果希望这段JSON内容作为嵌套的JSON结构(而非转义后的字符串值),需要先把字符串转换成PowerShell对象再处理。
解决方案
步骤1:将JSON字符串转换为PowerShell对象
你提供的$JSONStringValue是JSON片段(只有steps属性,不是完整的JSON对象),需要先补成全量JSON再解析:
# 把JSON片段补成完整的JSON对象,再转成PowerShell对象 $ParsedJson = ConvertFrom-Json -InputObject "{$JSONStringValue}"
步骤2:存入哈希表后转JSON
把转换后的PowerShell对象存入哈希表,再执行ConvertTo-Json,此时会生成嵌套的JSON结构,不会出现转义:
# 包含PS对象的哈希表 $ObjectToConvertToJson =@{ "Hello123" = $ParsedJson } # 用-Depth参数确保嵌套结构完整输出(默认Depth为2,这里结构层级足够,但显式指定更稳妥) $ObjectToConvertToJson | ConvertTo-Json -Depth 10
最终输出
{ "Hello123": { "steps": [ { "name": "Example step", "collectPageSource": false, "errorConditions": [], "actions": [ { "hello": "everyone" } ] } ] } }
特殊情况说明
如果你确实需要把这段JSON内容当作纯字符串值保留(即输出中Hello123的值是带转义的字符串),那这种转义是JSON的强制规范,无法避免——JSON语法要求字符串中的双引号、换行符必须转义,否则生成的JSON会不符合格式规范,无法被其他JSON解析器正常读取。
内容的提问来源于stack exchange,提问作者Russeller
相关产品推荐
相关产品推荐

