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

使用PowerShell提取JSON嵌套字段signing_certificate_id失败求助

问题:无法导出JSON嵌套字段signing_certificate_id到CSV

我尝试从JSON文件中提取signing_certificate_id字段,但该字段的数据无法导出到CSV文件,其他信息(如name、contact_info)可正常导出。部分JSON文件中存在两组相同结构的代码块,用于代表不同环境。

JSON片段示例

{
  "sfg_ping::production::standard_sp_connections": [
    {
      "name": "hhhh",
      "entity_id": "https://hhhh.hhhh.com",
      "contact_info": "hhhh@hhhh.com",
      "sp_endpoint": "https://hhhh.hhhh.com/",
      "sso_initialization_and_signature_policy": {
        "sign_assertion_or_response": "assertion",
        "sp_trust_model": "unanchored",
        "signing_certificate_id": "gggggg",
        "sp_initiated": {
          "require_signed_authn_requests": false
        }
      }
    }
  ]
}

当前使用的PowerShell脚本

Get-ChildItem "C:\Users\hhhh\appdev\targetfolder-json2" -Filter *.json -PipelineVariable file | ForEach-Object {
    (Get-Content $_.pspath -Raw | ConvertFrom-Json).PSObject.Properties.Value | Select-Object @(
        @{ l = 'filename'; e = { $file.Name }}, 'Name','contact_info', 'signing_certificate_id'
    )
} | Export-Csv path\to\myexport.csv -NoTypeInformation

问题原因与解决方案

问题出在signing_certificate_id是嵌套在sso_initialization_and_signature_policy对象内部的字段,直接在Select-Object中指定字段名无法识别嵌套层级。需要通过计算属性来深入读取嵌套字段的值。

修改后的脚本如下:

Get-ChildItem "C:\Users\hhhh\appdev\targetfolder-json2" -Filter *.json -PipelineVariable file | ForEach-Object {
    (Get-Content $_.pspath -Raw | ConvertFrom-Json).PSObject.Properties.Value | Select-Object @(
        @{ l = 'filename'; e = { $file.Name }},
        'Name',
        'contact_info',
        @{ l = 'signing_certificate_id'; e = { $_.sso_initialization_and_signature_policy?.signing_certificate_id }}
    )
} | Export-Csv path\to\myexport.csv -NoTypeInformation

关键改动说明

  • 将原脚本中的'signing_certificate_id'替换为计算属性:@{ l = 'signing_certificate_id'; e = { $_.sso_initialization_and_signature_policy?.signing_certificate_id }}
  • 使用?.(空条件运算符)可以避免因部分JSON对象缺少sso_initialization_and_signature_policy字段而报错,此时对应位置会导出空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:35:18