如何迭代未知的 JSON 数据/对象?

2024-01-28

给出两个 JSON 示例

{
    "A": {
        "name": "noname",
        "key": "nokey"
    }

进而

{
    "B": {
        "property1": "value3",
        "country": "australia"
    }
}

是否可以创建一个 Powershell 脚本,该脚本可以采用任一 JSON 示例并循环遍历它们,而无需预先知道任何名称/键? (使用Windows 2016)

与此处发布的答案类似的内容如何循环或枚举 JavaScript 对象? https://stackoverflow.com/questions/684672/how-do-i-loop-through-or-enumerate-a-javascript-object

var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    console.log(key + " -> " + p[key]);
  }
}

不工作

试过这个,但它只适用于第一级

$json = @"
 {"A": {"property1": "value1", "property2": "value2"}, "B": {"property1": 
 "value3", "property2": "value4"}}
"@

$parsed = $json | ConvertFrom-Json

$parsed.PSObject.Properties | ForEach-Object {
    $next = $_
    $name = $_.Name 
    $value = $_.value
    echo "$name = $value"

    $next.PSObject.Properties | ForEach-Object {
        $name = $_.Name 
        $value = $_.value
        echo "Second level: $name = $value"
    } 
}

ConvertFrom-Json使用嵌套结构PSCustomObjects来表示数据 - 您可以使用$x.psobject.properties获取结构中每个项目的 json 属性名称和值的集合,然后您可以根据需要循环遍历它们。

例如:

$x = ConvertFrom-Json "{ 'A': {'name': 'noname', 'key': 'nokey'} }"

foreach( $rootProperty in @($x.psobject.properties | where-object {$_.MemberType -eq "NoteProperty"}) )
{

    write-host "'$($rootProperty.Name)' = '$($rootProperty.Value)'"

    foreach( $childProperty in @($rootProperty.Value.psobject.properties | where-object {$_.MemberType -eq "NoteProperty"}) )
    {
        write-host "'$($childProperty.Name)' = '$($childProperty.Value)'"
    }

}

输出以下内容:

'A' = '@{name=noname; key=nokey}'
'name' = 'noname'
'key' = 'nokey'

如果将上述内容转换为在嵌套 PSCustomObjects 上调用自身的函数,您也可以递归地将结构遍历到任意深度,但我不确定您是否需要能够这样做,或者只是像您的示例中那样进入 2 层json 文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何迭代未知的 JSON 数据/对象? 的相关文章

  • Hive:如何分解嵌入 CSV 文件中的 JSON 列?

    从 CSV 文件 带有标题和管道分隔符 中 我得到了以下两个内容 其中包含一个 JSON 列 内部有一个集合 如下所示 第一种情况 使用没有名称的 JSON 集合 ProductId IngestTime ProductOrders 918
  • 为什么 PowerShell ISE 不允许我在以管理员身份运行时设置断点?

    Having 未能使 PowerGUI 正常工作 https stackoverflow com questions 4368348 why does f5 start debugging ignore breakpoints in pow
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • 使用 urllib2 从 FlightRadar24 获取数据时出现问题

    我正在尝试使用下面的脚本从 FlightRadar24 获取数据 基于这个答案 https stackoverflow com a 526695 3904031来处理cookies 当我当前在浏览器中输入该 url 时 我会得到一个不错的长
  • Wiremock:如何匹配没有特定属性的 JSON 请求?

    我正在尝试模拟一个在 POST 中接受 JSON 正文的 API 调用 它有两种可能的响应 如果身体含有SearchCenter属性 回答 A 如果正文不包含SearchCenter 回答B In the 请求匹配 http wiremoc
  • 如何为所有 API 端点全局设置 http.ResponseWriter Content-Type 标头?

    我是 Go 新手 现在正在用它构建一个简单的 API package main import encoding json fmt github com gorilla mux github com gorilla handlers log
  • Powershell 在导入 csv 时出现 Set-ACL 问题

    我使用一个脚本将 ACL 从一个系统导入到 csv 中 并使用另一个脚本读取 csv 创建文件夹结构并将权限应用到新系统 由于安全限制 系统不可能相互连接 因此不能选择 robocopy 正在创建新的文件夹结构 但 ACL 未应用 并且出现
  • PHP 中的简单 JSON 请求

    我有以下 json country code latitude 45 9390 longitude 24 9811 zoom 6 address city country Romania country code RO region 我只想
  • 在java中创建一个XML树并将其转换为json对象

    我尝试创建也能够转换为 json 的树 但对于只有一个xpath 当我尝试实现多个 xpath 时 我无法获得所需的输出 这里我分享一下我的实现 private static Document addElemtbypath List
  • 如何修复 jq 扁平化 JSON 数组的重复输出

    我正在尝试使用 jq 命令压平 JSON 文件 但输出是重复的 请在这里查看我的jqplay https jqplay org s gwvMIH fed https jqplay org s gwvMIH fed 我的输入 JSON cos
  • 将相同的多个对象推送到多个数组中

    这是后续使3个数组相互对应 第一个是对象名称 https stackoverflow com questions 57564488 make 3 arrays correspond to each other with the first
  • Spring JSON序列化、Gson反序列化

    我目前在某些内部对象的反序列化方面遇到问题 在春天 我在使用输出之前初始化所有对象 ResponseBody 例如 这是一个响应 id 1 location id 1 extra location data id 2 location 1
  • 在 JSON 数组中按属性查找对象

    我在获取 JSON 数据中的字符串时遇到问题 格式如下 name Alice age 20 id David last 25 id John last 30 有时它会一起改变位置 John从第三名到第二名 name Alice age 20
  • 从哈希中删除 nil 值

    我希望从哈希中删除具有nil value article是一个存储每篇文章的类 并且attributes方法将文章存储为散列 预期结果 articles results author null title Former bar manage
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • Powershell:获取 FQDN 主机名

    我想通过 powershell 脚本检索 Windows 服务器的 FQDN 名称 到目前为止我已经找到了2个解决方案 server Invoke Command ScriptBlock hostname 上面的行将仅打印服务器的短名称 s
  • 如何在 Powershell 中设置低 I/O(“后台”)优先级

    There s 这个powershell脚本 https stackoverflow com a 4302 1266650它可以将进程的优先级从 空闲 设置为 实时 但某些工具提供另一个优先级 该优先级甚至会降低进程的优先级 如何在 Pow
  • Laravel 5.4 将json保存到数据库

    帮我将 json 保存到数据库 表字段类型 文本 我有带有强制转换数组的模型 class Salesteam extends Model protected casts team members gt array 我想要像这样 index
  • 使用 JSONArray 还是普通数组来存储/读取数据更有效?

    我正在使用一个连接到PHP MySQL返回所有内容的服务器JSON格式 例如 用户列表作为JSONArray of JSONObject 每个对象都包含单个用户的信息 姓名 位置 电话号码等 处理这种格式的信息时 将所有内容保留在其中会更有
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f

随机推荐