首页 > 解决方案 > 如何在 Powershell 中创建带有数组的 JSON 对象

问题描述

我是 Powershell 的新手,我在谷歌上找不到这个,但是我如何构建一个里面有一个数组的 json 结构呢?是通过自定义对象吗?我在网上看到的语法有点困惑,不知道推荐的方法是什么。最终,我也需要能够将其保存到 JSON 文件中。

json_ret = { 
             "a": 4, 
             "b": [ {"c" : 5, "d": "text", "e": "foo"}] 
           }

标签: jsonpowershell

解决方案


是的,您可以通过 PSCustomObject 构建 json 对象:

[PSCustomObject]@{
  a = 4
  b = @([ordered]@{
    c = 5
    d = "text"
    e = "foo"
  })
} | ConvertTo-Json
  • 首先,我们使用其类型加速器 PSCustomObject 创建 PSObject。

  • 然后我们定义根键和值“a”,我们必须在“b”内创建一个数组。

  • @()语句创建了一个数组,但我们不能在数组中创建键值对。所以我们用它@{}来创建hashtable。在它之前[ordered]标志说哈希表保持我们创建它的确切结构。

  • 然后我们定义数组值,然后关闭内部数组哈希表。

  • 现在我们结束 PSCustomObject 并对其进行管道传输ConvertTo-Json。现在你得到一个转换后的 json。

脚注

  • 如果要将 json 转储到文件中,请使用以下命令:
[PSCustomObject]@{
  a = 4
  b = @([ordered]@{
    c = 5
    d = "text"
    e = "foo"
  })
} | ConvertTo-Json |  Out-File "Filepath"
  • 如果要将 json 保存到变量中:
$variable = ([PSCustomObject]@{
  a = 4
  b = @([ordered]@{
    c = 5
    d = "text"
    e = "foo"
  })
} | ConvertTo-Json)

推荐阅读