Arrays Powershell:在嵌套JSON数组中引用值
我正在尝试使用powershell使用Invoke RestMethod函数与api通信 据我所知,它将JSON响应作为powershell对象数组返回。结果有两个级别,即项目列表,然后根据这些项目设置自定义字段 我尝试循环遍历每个项目,然后遍历项目的每个自定义字段,然后使用此信息执行各种SQL操作 目前,我正在努力解决这样一个事实,即我可以使用ForEach循环遍历作为项目的顶级数据,但当我尝试循环遍历项目的自定义字段时,它实际上是在循环遍历所有项目的所有自定义字段 我用我在powershell有限的经验和长时间的搜索和阅读获得了这一成就。然而我确信我只是不理解这里的全部概念,希望这只是一个简单的问题,我试图引用数据的方式 这是api响应的一个示例Arrays Powershell:在嵌套JSON数组中引用值,arrays,json,powershell,Arrays,Json,Powershell,我正在尝试使用powershell使用Invoke RestMethod函数与api通信 据我所知,它将JSON响应作为powershell对象数组返回。结果有两个级别,即项目列表,然后根据这些项目设置自定义字段 我尝试循环遍历每个项目,然后遍历项目的每个自定义字段,然后使用此信息执行各种SQL操作 目前,我正在努力解决这样一个事实,即我可以使用ForEach循环遍历作为项目的顶级数据,但当我尝试循环遍历项目的自定义字段时,它实际上是在循环遍历所有项目的所有自定义字段 我用我在powershel
"TotalPages":1, "TotalRecords":2, "Data":[
{
"code":"00000014",
"description":"Digital Strategy",
"customFieldValues":[
{
"key":135,
"name":"Department",
"value":"Sales"
}
]
},
{
"code":"T3FA",
"description":"Survey coding",
"customFieldValues":[
{
"key":135,
"name":"Department",
"value":"Finance"
}
]
} ] }
$APIResponse = Invoke-RestMethod -Uri $Uri -Headers $Headers
ForEach ($d in $APIResponse.data) {
"Project Code = " + $d.code + ", Project Description = " + $d.description
ForEach ($e in $APIResponse.data.customFieldValues) {
"CustomField Key " + $e.key + ", Name " + $e.name + ", Value " + $e.value
}
}
这是我循环响应的简单代码
"TotalPages":1, "TotalRecords":2, "Data":[
{
"code":"00000014",
"description":"Digital Strategy",
"customFieldValues":[
{
"key":135,
"name":"Department",
"value":"Sales"
}
]
},
{
"code":"T3FA",
"description":"Survey coding",
"customFieldValues":[
{
"key":135,
"name":"Department",
"value":"Finance"
}
]
} ] }
$APIResponse = Invoke-RestMethod -Uri $Uri -Headers $Headers
ForEach ($d in $APIResponse.data) {
"Project Code = " + $d.code + ", Project Description = " + $d.description
ForEach ($e in $APIResponse.data.customFieldValues) {
"CustomField Key " + $e.key + ", Name " + $e.name + ", Value " + $e.value
}
}
我猜它正在做它被要求做的事情,因为它在所有customFieldValue中循环,但我需要它在与我当前循环的项目相关的自定义字段中循环,如果这有任何意义的话?好的,我不确定我以前怎么没有找到这个,但是一些尝试和错误导致我找到了这个看来效果不错 在第二个ForEach中,我将$APIResponse.data.customFieldValues替换为$d.customFieldValues,这似乎使它只查看当前选择的项目
$APIResponse = Invoke-RestMethod -Uri $Uri -Headers $Headers
ForEach ($d in $APIResponse.data) {
"Project Code = " + $d.code + ", Project Description = " + $d.description
ForEach ($e in $d.customFieldValues) {
"CustomField Key " + $e.key + ", Name " + $e.name + ", Value " + $e.value
}
}