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

使用PUT方法更新嵌套JSON值的PowerShell技术问题

解决PUT请求更新嵌套JSON字段的问题

看起来你已经搞定了顶层字段的更新,但嵌套的custom_fields字段没生效,核心问题是你定义的PowerShell哈希表结构和API期望的JSON格式不匹配——你把本该是对象的结构写成了数组,导致API无法正确解析你的更新请求。

修正后的PowerShell代码

$Authorization = "Bearer API-KEY"
$update = [ordered]@{
    name = 'ppp'
    asset_tag = 'BBB'
    # 把custom_fields从数组改成对象(哈希表)
    custom_fields = [ordered]@{
        # Mediensatz同样改成对象,去掉外层数组包裹
        Mediensatz = [ordered]@{
            value = "B2T-XXX"
            # 注意:如果API要求必须携带field和field_format字段才能更新,就加上下面两行
            # field = "lll"
            # field_format = "ANY"
        }
        # 不需要修改的Ueberschreibschutz字段可以省略,多数API会保留原有值
    }
}
$json = $update | ConvertTo-Json -Depth 100
# 先打印JSON确认格式是否正确
# Write-Host $json
$response = Invoke-RestMethod 'URL' -Method Put -Body $json -ContentType 'application/json' -Headers @{'Authorization' = $Authorization}

关键修正点说明

  1. custom_fields的结构:目标JSON里custom_fields是一个键值对对象({...}),但你之前用@(...)把它定义成了数组([...]),这是最主要的问题。改成[ordered]@{...}后,生成的JSON会是正确的对象格式。
  2. Mediensatz的结构:同样,目标里Mediensatz是一个包含value等属性的对象,你之前用@(...)把它套成了数组,现在直接用哈希表定义即可。
  3. 字段完整性:如果你的API要求更新嵌套字段时必须提供所有相关属性(比如field和field_format),记得把这些字段也加到Mediensatz的哈希表里;如果API支持部分更新,只传value就足够,原有字段会被保留。

修正后生成的JSON格式

修正后生成的JSON会和API期望的结构一致:

{
    "name": "ppp",
    "asset_tag": "BBB",
    "custom_fields": {
        "Mediensatz": {
            "value": "B2T-XXX"
        }
    }
}

这样API就能正确识别并更新custom_fields → Mediensatz → value字段了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:11:51