Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Powershell:在嵌套JSON数组中引用值_Arrays_Json_Powershell - Fatal编程技术网

Arrays Powershell:在嵌套JSON数组中引用值

Arrays Powershell:在嵌套JSON数组中引用值,arrays,json,powershell,Arrays,Json,Powershell,我正在尝试使用powershell使用Invoke RestMethod函数与api通信 据我所知,它将JSON响应作为powershell对象数组返回。结果有两个级别,即项目列表,然后根据这些项目设置自定义字段 我尝试循环遍历每个项目,然后遍历项目的每个自定义字段,然后使用此信息执行各种SQL操作 目前,我正在努力解决这样一个事实,即我可以使用ForEach循环遍历作为项目的顶级数据,但当我尝试循环遍历项目的自定义字段时,它实际上是在循环遍历所有项目的所有自定义字段 我用我在powershel

我正在尝试使用powershell使用Invoke RestMethod函数与api通信

据我所知,它将JSON响应作为powershell对象数组返回。结果有两个级别,即项目列表,然后根据这些项目设置自定义字段

我尝试循环遍历每个项目,然后遍历项目的每个自定义字段,然后使用此信息执行各种SQL操作

目前,我正在努力解决这样一个事实,即我可以使用ForEach循环遍历作为项目的顶级数据,但当我尝试循环遍历项目的自定义字段时,它实际上是在循环遍历所有项目的所有自定义字段

我用我在powershell有限的经验和长时间的搜索和阅读获得了这一成就。然而我确信我只是不理解这里的全部概念,希望这只是一个简单的问题,我试图引用数据的方式

这是api响应的一个示例

"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
    }
}