我正在尝试在Powershell中更新Swagger JSON文档。如果对象上不存在属性和值,我需要添加几个属性和值。
执行此操作的代码非常简单:
$swaggerDoc = (Get-Content $filePath -raw | ConvertFrom-Json)
$swaggerDoc | Add-Member -Name host -MemberType NoteProperty -Value "swagger.io" -Force
$swaggerDoc | Add-Member -Name schemes -MemberType NoteProperty -Value @("https") -Force
$swaggerDoc | ConvertTo-Json | Set-Content $filePath
我遇到的问题是当我将JSON保存回文件时JSON完全被破坏:例如
"get": {
"tags": [
"Links"
],
"operationId": "Links_GetAll",
"parameters": [],
"responses": {
"200": {
"description": "Returns all the available links in the system",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/AdministrativeLink"
}
},
"x-nullable": true
}
}
}
变为
"get": "@{tags=System.Object[]; operationId=Links_GetAll; parameters=System.Object[]; responses=}",
我还没有看到任何其他关于如何在Powershell中执行此操作的示例,是否存在一些我缺少的语法或参数以保留原始格式?
答案 0 :(得分:3)
使用ConvertTo-Json
时,请使用-Depth
保留JSON
的正确格式。
例如:
$swaggerDoc | ConvertTo-Json -Depth 10 | Set-Content $filePath
我还必须在JSON周围添加括号,以使PowerShell可以读取有效的JSON。
答案 1 :(得分:0)
如果要剪切和粘贴,请确保删除格式。例如,如果您使用的是Mac,请使用" Command + Shift + V"粘贴,这将在剪切和粘贴时删除格式。也永远不要使用" TABS"在JSON文件中,只有" ENTER"和空间