【发布时间】:2018-02-03 13:29:04
【问题描述】:
我有这个文件 .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 和一个 JSON 语法错误。
-
您好,感谢您的回复。我收到此错误:ConvertFrom-Json:无效的 json 原语:[。 (system.argunment.exception) + ... ations.instances | Add-Content -Value (ConvertFrom-Json $jsonContent) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [ConvertFrom-Json],ArgumentException + FullyQualifiedErrorId:System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
-
因为
$jsonContent中的尾随逗号使 JSON 字符串无效。但即使您删除它,也无法通过附加到文件的方式将新数据插入到 JSON 结构中。即使您发布的原始 JSON 字符串也是无效的。请edit您的问题显示您的代码、输入、所需输出以及代码给您的错误的minimal reproducible example。 -
好的,所以我修改了我的第一篇文章,抱歉。我不擅长 json 文件的语法
-
也许只是在解析之前将
[替换为[+$jsonContent
标签: arrays json powershell object add