PowerShell生成嵌套JSON结构不符合预期问题求助
PowerShell 生成API请求JSON异常问题修复
错误原因
- 重复调用
ConvertTo-Json:你先把哈希表转成了JSON字符串赋值给$body,又对这个字符串执行了一次JSON转换,相当于把JSON文本当成普通字符串序列化,才会出现大量转义字符、artifacts被转为字符串的问题。 artifacts字段定义错误:一是字段名前多加了$符号,变成了用$artifacts变量的值作为键名;二是官方要求artifacts是对象数组,你只定义了单个对象。- 未指定JSON序列化深度:PowerShell的
ConvertTo-Json默认序列化深度为2,嵌套层级更多的结构会被截断,需要手动指定-Depth参数适配嵌套结构。
正确代码示例
# 先构造artifacts数组,可按需添加多个对象 $artifacts = @( [PSCustomObject]@{ dataType = "ip" data = "127.0.0.1" message = "localhost" } # 可继续添加其他artifact对象 <# [PSCustomObject]@{ dataType = "domain" data = "thehive-project.org" tags = @("home", "TheHive") } #> ) # 构造请求体哈希表 $body = @{ title = $title description = $Alert_Description type = "external" source = $Source sourceRef = $SourceRef severity = $Severity tlp = $tlp artifacts = $artifacts caseTemplate = "external-alert" } # 仅执行一次JSON转换,指定足够的序列化深度 $JsonBody = $body | ConvertTo-Json -Depth 10
验证说明
生成后可直接输出$JsonBody检查结构,确认artifacts是数组格式、无多余转义字符后即可用于API调用。
内容的提问来源于stack exchange,提问作者Stefan Röthlisberger
相关产品推荐
相关产品推荐

