[英]Merging two json files into one?
I have two .Json
files I need to merge into one .Json
file:我有两个
.Json
文件需要合并到一个.Json
文件中:
The first file start.json
looks like this:第一个文件
start.json
如下所示:
{
"MOUSE GESTURE L Start": {
"prefix": "MOUSE GESTURE L Start To Start",
"body": [
"MG_Start()"
],
"description": "Start Cursor back to its start"
}
}
The second file end.json
looks like this:第二个文件
end.json
如下所示:
{
"MOUSE GESTURE L Move To end": {
"prefix": "MOUSE GESTURE L Move To end",
"body": [
"MG_Move()"
],
"description": "Move Cursor back to its end"
}
}
The Expected out I am aiming for is:我的预期目标是:
{
"MOUSE GESTURE L Start": {
"prefix": "MOUSE GESTURE L Start To Start",
"body": [
"MG_Start()"
],
"description": "Start Cursor back to its start"
}
"MOUSE GESTURE L Move To end": {
"prefix": "MOUSE GESTURE L Move To end",
"body": [
"MG_Move()"
],
"description": "Move Cursor back to its end"
}
}
I have tried:我试过了:
$Jstart = (Get-Content .\start.json -Raw) | ConvertFrom-Json
$JEnd = (Get-Content .\end.json -Raw) | ConvertFrom-Json
$Hash = [PSCustomObject]@{
$Jstart = (Get-Content .\start.json -Raw) | ConvertFrom-Json
$JEnd = (Get-Content .\end.json -Raw) | ConvertFrom-Json
}
but I get a undesired jumbled output:但我得到了不希望的混乱输出:
{
"@{MOUSE GESTURE L Start=}": {
"MOUSE GESTURE L Start": {
"prefix": "MOUSE GESTURE L Start To Start",
"body": "MG_Start()",
"description": "Start Cursor back to its start"
}
},
"@{MOUSE GESTURE L Move To end=}": {
"MOUSE GESTURE L Move To end": {
"prefix": "MOUSE GESTURE L Move To end",
"body": "MG_Move()",
"description": "Move Cursor back to its end"
}
}
}
I've tried variations but things just get worse.我试过变体,但事情变得更糟。 Any ideas on how I can get this right?
关于如何做对的任何想法? Thank you
谢谢
EDIT:编辑:
@Santiago Squarzon @圣地亚哥斯夸松
While solution works for the example I provided, I am getting problems trying to adapt it to my code.虽然解决方案适用于我提供的示例,但我在尝试使其适应我的代码时遇到了问题。
The prblem I am having is, if one of the .Json
files happens to have more than one object in it, like this:我遇到的问题是,如果其中一个
.Json
文件恰好包含多个对象,如下所示:
{
"MOUSE GESTURE L Move To end": {
"prefix": "MOUSE GESTURE L Move To end",
"body": [
"MG_Move()"
],
"description": "Move Cursor back to its end"
},
"Another Snippet": {
"prefix": "MOUSE GESTURE L Move To end",
"body": [
"MG_Move()"
],
"description": "Move Cursor back to its end"
}
}
Then $left.PSObject.Properties.Add($($right.PSObject.Properties))
failss, I get the error:然后
$left.PSObject.Properties.Add($($right.PSObject.Properties))
失败,我得到错误:
MethodException:
Cannot find an overload for "Add" and the argument count: "1".
Probably the easiest to go about this would be to append one object to the other:可能最简单的方法是将一个对象附加到另一个对象:
$left = Get-Content .\start.json -Raw | ConvertFrom-Json
$right = Get-Content .\end.json -Raw | ConvertFrom-Json
foreach($prop in $right.PSObject.Properties) {
$left.PSObject.Properties.Add($prop)
}
$left | ConvertTo-Json -Depth 99
Resulting Json would look something like this:生成的 Json 看起来像这样:
{
"MOUSE GESTURE L Start": {
"prefix": "MOUSE GESTURE L Start To Start",
"body": [
"MG_Start()"
],
"description": "Start Cursor back to its start"
},
"MOUSE GESTURE L Move To end": {
"prefix": "MOUSE GESTURE L Move To end",
"body": [
"MG_Move()"
],
"description": "Move Cursor back to its end"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.