You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中解析含转义引号的JSON并提取指定值?

解决PowerShell提取JSON中转义引号内容的问题

嘿,我来帮你搞定这个提取需求!你提到用ConvertFrom-Json没成功,大概率是原JSON文件的格式有问题(比如没把所有对象放到数组里,或者存在语法小错误),不过没关系,我给你两种可行的方案:

方案一:先合法解析JSON,再提取目标值

首先得确保你的JSON文件是合法格式——如果原文件是数千个独立对象直接拼接,记得把它们放到数组[]里(开头加[,结尾加],对象之间用逗号分隔)。比如修正后的结构应该是这样:

[
  {
    "Name": "AllZones_APOPreface_GeographyMatch_FromBRE_ToSTR",
    "Sequence": 0,
    "Condition": "this.TripOriginLocationCode==\"BRE\"&&this.TripDestinationLocationCode==\"STR\"",
    "Action": "this.FeesRate=0.19m;this.ZoneCode=\"Zone1\";halt",
    "ElseAction": ""
  },
  // 更多对象...
]

之后用以下PowerShell代码解析并提取:

# 读取并解析JSON文件
$jsonData = Get-Content -Path "你的文件路径.json" -Raw | ConvertFrom-Json

# 遍历每个对象,提取转义引号内的目标值
foreach ($item in $jsonData) {
    # 从Condition字段提取出发地和目的地代码
    $conditionValues = [regex]::Matches($item.Condition, '(?<=\")([^\"]+)(?=\")') | ForEach-Object { $_.Value }
    $origin = $conditionValues[0]
    $destination = $conditionValues[1]

    # 从Action字段提取ZoneCode值
    $zoneCode = [regex]::Match($item.Action, '(?<=ZoneCode=\")([^\"]+)').Value

    # 输出结构化结果(也可以导出到CSV等)
    [PSCustomObject]@{
        名称 = $item.Name
        出发地 = $origin
        目的地 = $destination
        区域代码 = $zoneCode
    }
}

这里用到的正则表达式(?<=\")([^\"]+)(?=\")是正向预查匹配,专门抓取被转义双引号包裹的内容,不会把引号本身包含进去。

方案二:直接正则提取(适合JSON格式无法修复的情况)

如果原JSON文件格式太乱,没法用ConvertFrom-Json解析,那可以直接读取文件文本,用正则全局匹配所有转义引号内的内容:

# 读取整个文件内容
$fileContent = Get-Content -Path "你的文件路径.json" -Raw

# 匹配所有转义引号内的内容
$allQuotedValues = [regex]::Matches($fileContent, '(?<=\")([^\"]+)(?=\")') | ForEach-Object { $_.Value }

# 每3个值为一组(对应每个对象的出发地、目的地、区域代码)
for ($i = 0; $i -lt $allQuotedValues.Count; $i += 3) {
    [PSCustomObject]@{
        出发地 = $allQuotedValues[$i]
        目的地 = $allQuotedValues[$i+1]
        区域代码 = $allQuotedValues[$i+2]
    }
}

这个方法不需要依赖JSON解析,直接从文本层面提取,适合格式不规范的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:08:04