【发布时间】:2019-04-05 15:33:00
【问题描述】:
我正在通过 powershell 从 json 文件中读取数据,最终目标是更新所述文件。我需要将数据拆分为要保留的块和要更新的块,并且为了使事情进一步复杂化,我需要拆分文本的位置在整个 foreach 循环中会有所不同,因此我需要该部分来自一个变量。
我在多种配置中尝试过.split/-split 和.replace/-replace,但似乎这比在 powershell 中假设的要难。
以下所有文件都在同一个文件夹中。
Json (json.json):
{
"Section1": {
"Heading1": [
"Thing1",
"Thing2"
]
},
"Section2": [
"Thing1",
"Thing2"
]
}
Powershell (powershell.ps1):
$originalJsonString = Get-Content -Path ".\json.json"
$SplitTarget = "Section2"
$JsonString = {This is the part that I am iffy about}
Write-Output $JsonString
我想从上面得到的输出是
{
"Section1": {
"Heading1": [
"Thing1",
"Thing2"
]
},
我已经尝试了几乎所有我能想到的与拆分和替换相关的方法,但解决方案却暗示了我。
请注意,在上面的解决方案中,$originalJsonString 被 $SplitTarget 分割(或其他)是一个重要因素,而不是“Section2”,因为这也是我等式中的一个因素。
这是我第一次问,所以如果我做错了什么,我道歉。
谢谢。
编辑: 我添加不转换为对象的原因是公平的。 将 json 转换为对象并返回时 powershell 导出的语法不适合我使用。 但是,如果使用对象是唯一的方法,并且分切是不可能的,那么必须找到另一种解决方案。 谢谢。
编辑: 如果对象是要走的路,我最终找到了一种更复杂的方法来按照我想要的方式格式化 .json。 谢谢大家。
【问题讨论】:
-
您可以摆弄
-split正则表达式,但实际上是 IMO 转换为对象的唯一可靠方法。毕竟... JSON 是 JavaScript Object Notation。
标签: json powershell replace split