arrays - 如何在解析的JSON数组中添加对象?

标签 arrays json powershell object add

我有此文件.json:

{
  "topologyTypes": {
    "stations": {
      "instances": [
        {
          "@name": "value1",
          "@address": "value2"
        },
        {
          "@name": "value3",
          "@address": "value4"
        }         
      ]
    }
  },
  "agg": {},
  "inter": {}
}

我想使用PowerShell在topologyType.stations.instances中添加这样的对象

{
    "@name": "value4",
    "@adress": "value5"
}

因此,我在PowerShell中尝试了以下代码,但不起作用:

$path = "./data.json"
$jsonFile = Get-Content $path -Raw | ConvertFrom-Json

$jsonContent = @"
    {
        "@name": "value4",
        "@adress": "value5"
    }
"@

$jsonFile.topologyTypes.stations.instances |
    Add-Content -Value (ConvertFrom-Json $jsonContent)

我想要的期望输出是这样的:

{
  "topologyTypes": {
    "stations": {
      "instances": [
        {
          "@name": "value1",
          "@address": "value2"
        },
        {
          "@name": "value3",
          "@address": "value4"
        },
        {
          "@name": "value4",
          "@address": "value5"
        }         
      ]
    }
  },
  "agg": {},
  "inter": {}
}

最佳答案

将新内容定义为PowerShell自定义对象:

$jsonContent = [PSCustomObject]@{
    '@name'   = 'value4'
    '@adress' = 'value5'
}

将其附加到导入的JSON数据的instances子结构中:
$jsonFile.topologyTypes.stations.instances += $jsonContent

然后将数据转换回JSON字符串:
$jsonFile | ConvertTo-Json -Depth 4

请注意,ConvertTo-Json插入了大量意图空间。如果您想要发布的确切格式,则需要自己做一些 pretty-print 。像this这样的东西可能会有所帮助。

关于arrays - 如何在解析的JSON数组中添加对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597871/

相关文章:

javascript - 如何在单击按钮时从数组中删除项目

java - 如何访问Docker容器中存储在 'src/main/resources/someFolder'中的应用程序资源文件?

powershell - 设置内容偶尔失败,错误为 "Stream was not readable"

powershell - 如何通过管道正确展开数组?

php - 在 foreach 中对 mysql-select 中的数组进行排序

php - 如何在保留键的同时合并多维数组?

c++ - 从 C++ 中的 Blob 检测中提取 OpenCV 轮廓数组

ios - 使用 Codable 与 Swift 归档

ios - 如何在 Swift 4 中解码 JSON(JSON Web token )?

powershell - 同时剪辑并显示结果