json - 使用 powershell 的 Zscaler API Json 问题
问题描述
请参阅我目前使用的以下 powershell 代码。
$ZscalerURL = "https://ips.zscalertwo.net/cenr/json"
$r = (Invoke-RestMethod -Uri $ZscalerURL).'zscalertwo.net'
$results = New-Object PSObject
$r.parameters.psobject.Properties.Name |
ForEach{
Add-Member -InputObject $results -NotePropertyName $_ -NotePropertyValue $r.parameters.$_.Value
}
我无法使用此方法和其他一些方法将 json 转换为可读格式,例如,我无法引用 $r.continent.city。
已经尝试使用 convertfrom-json 和 invoke-webrequest 并使用使用 foreach 循环的 hacky 方法,例如 $americas=foreach ($name in $r.'continent : Americas'){$name}
解决方案
目前尚不清楚您的预期输出是什么。但是,您可以通过循环遍历所有大陆属性和城市属性来执行以下操作。然后将这些大陆和城市名称传递给网络地址对象。
$ZscalerURL = "https://ips.zscalertwo.net/cenr/json"
$r = (Invoke-RestMethod -Uri $ZscalerURL).'zscalertwo.net'
foreach ($continent in $r.psobject.properties.name) {
foreach ($city in $r.$continent.psobject.properties.name) {
$r.$continent.$city |
Select-Object @{n='Continent';e={($continent -split ':')[-1].Trim()}},@{n='City';e={($city -split ':')[-1].Trim()}},*
}
}
如果您想按原样列出大陆和城市属性而不进行任何操作,则可以省略该-split
方法。rest 方法响应将大陆属性值提供为continent : <continent name>
. 同样,城市属性值为city : <city name>
。该-split
方法摆脱了continent :
和city :
前缀。如果不进行任何操作,您将使用以下语法作为示例来检索特定城市的网络地址信息:
$r.'continent : emea'.'city : amsterdam'
推荐阅读
- java - 从属性文件中读取 springdoc-openapi-ui 注释值
- peoplesoft - 在 Peoplesoft 中,网格级别如何在应用程序设计器中工作?
- graphql - graphql-js 中不推荐使用的字段未显示
- java - ndk-build'' 以非零退出值完成 2 尝试了很多解决方案,但它不起作用
- c++ - 无法在 Windows 上使用 clang 12 构建 boost asio
- function - 我的宏使用 =IFERROR((L12)/(P12/(MONTH(TODAY()))), 0) 返回 YTD 平均值,但此函数仅返回月份数,例如。五月 = 5
- sql - 如何在 PostgreSQL 中过滤和求和整数数组
- css - Bootstrap Text Align 基于断点
- python - 您如何知道使用转换器进行情感分析的文本的好坏?
- json - Scala JSON将嵌套数组解析为案例类