我在GitHub上有一个类似下面的.json文件。
{
"quiz": {
"sport": {
"q1": {
"question": "Which one is correct team name in NBA?",
"options": [
"New York Bulls",
"Los Angeles Kings",
"Golden State Warriros",
"Huston Rocket"
],
"answer": "Huston Rocket"
}
},
"maths": {
"q1": {
"question": "5 + 7 = ?",
"options": [
"10",
"11",
"12",
"13"
],
"answer": "12"
},
"q2": {
"question": "12 - 8 = ?",
"options": [
"1",
"2",
"3",
"4"
],
"answer": "4"
}
}
}
}
我想添加新的键和值到“数学”使用PowerShell。在将git repo克隆到我的本地目录后,我尝试了以下命令
$FilePath = 'C:\Users\test.json
$y = Get-Content $FilePath | ConvertFrom-Json
$value = @`
{
"question": "12 - 6 = ?",
"options": [
"1",
"2",
"3",
"6"
],
"answer": "6"
}
`@
$resultObject = $value | ConvertFrom-Json
$y.quiz.maths | Add-Member -MemberType NoteProperty -Name "q3" -Value $resultObject
$y | ConvertTo-Json -Depth 3 | Set-Content -Path $FilePath
然后承诺并推动变革。当我检查“main”分支和我的“feature”分支之间的比较时,由于新的空白,整个文件已经被重写。
注意事项:
1.“-compress”命令在这里没有帮助
1.如果我合并,并再次提出一个PR与新的价值观,它只给出了具体的提交,但这将继续不必要的空白
问题;
1.有没有合适的方法可以避免出现多余的空格
2.我们可以不转换成PowerShell对象来做吗?我知道我们可以使用'-Raw'选项将其转换为'String',那么我们如何添加上面的新属性并进行只有特定更改的单次提交
3.除了以上两个选项外,是否还有其他方法可以使用PowerShell向此.json文件添加新值?
2条答案
按热度按时间rxztt3cl1#
我们可以简单地将PowerShell版本更新到7+,并在转换为PowerShell对象时使用-Depth选项,并在转换回JSON文件时使用相同的Depth选项。这样,它就解决了这个问题
jchrr9hc2#
这似乎是一个使用Class定义“问题”结构的好地方,它可以更容易地将新问题添加到JSON文件中。
第一步是定义类:
现在你可以这样重复使用它(创建新问题):
最后,你可以像这样将这个新问题添加到你的Json中:
从这个例子中得到的Json将是: