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

PowerShell使用ConvertFrom-JSON转JSON为对象后无法正确访问属性怎么办

问题根因与修复方案

错误点1:JSON变量定义格式错误

你当前用{}包裹JSON内容,在PowerShell中{}默认代表脚本块类型,并非ConvertFrom-Json要求的字符串输入类型,需要先将JSON内容修改为合法字符串,推荐使用PowerShell多行here-string写法:

$results = @"
{
  "status": "FINISHED",
  "data": {
    "results": [
      {
        "id": "11565C230500",
        "custom": {
          "image": "XXXX",
          "name": "XXXX",
          "articleNumber": "4032423423505"
        }
      },
      {
        "id": "22739L5F16243",
        "custom": {
          "image": "XXXX",
          "name": "XXXX",
          "articleNumber": "4032423423505"
        }
      },
      {
        "id": "3304332724004",
        "custom": {
          "image": "XXXX",
          "name": "XXXX",
          "articleNumber": "4032423423505"
        }
      }
    ]
   }
 }
"@

错误点2:变量名拼写错误

你定义的JSON存储变量名为$results,但调用ConvertFrom-Json时传入的参数是$result,缺少末尾的s,导致传入空值,转换后无法得到预期对象。正确转换代码如下:

$resultObject = ConvertFrom-Json -InputObject $results

错误点3:对象属性访问路径错误

ConvertFrom-Json转换后的对象层级和输入JSON结构完全对应:

  • 根对象第一层仅包含status、data两个属性(你观察到的转换结果完全正常,并非转换逻辑出错)
  • data属性下才包含results数组,数组的每一个元素才具备id、custom属性
    你直接访问$resultObject.id属于访问根对象不存在的属性,自然返回空值。正确的筛选代码如下:
# 先定位到data下的results数组,再筛选对应id的元素
$targetItem = $resultObject.data.results | Where-Object { $_.id -eq '11565C230500' }
# 后续可直接访问内部属性,示例:获取对应商品编码
$targetItem.custom.articleNumber

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:27:04