使用 PowerShell 修改 JSON 的关键部分



使用Powershell如何在json的路径下修改"/api/v1/user/Answers"?我想用其他一些值替换它,如/abc/v1/xyz/Answers。

{
"version": "2.0",
"host": "worktest.com",
"paths": {
"/api/v1/user/Answers": {...},
"/api/v1/user/Assignments/GetUserAssignmentDetails": {...},
"/user/Assignments/GetStatus": {...},
"/Grades/GetGradesByProduct": {...}
},
}
$content = Get-Content 'd:temptest.json'| ConvertFrom-Json
$content.paths.'/api/v1/user/Answers' # not sure where to go from here

我使用了以下JSON:

{
"version": "2.0",
"host": "worktest.com",
"paths": {
"/api/v1/user/Answers": {
"answer1": "something",
"answer2": "something else"  
},
"/api/v1/user/Assignments/GetUserAssignmentDetails": "value",
"/user/Assignments/GetStatus": "value",
"/Grades/GetGradesByProduct": "value"
}
}

以下代码将密钥的值复制到新创建的密钥,然后删除旧密钥:

$content = Get-Content 'test.json'| ConvertFrom-Json
# Which key to replace
$pathToBeReplaced = '/api/v1/user/Answers'
# Construct new key
$newPath = $pathToBeReplaced -replace '^/api','/abc'
# Create new property with proper value
$content.paths | Add-Member -Type NoteProperty -Name $newPath -Value $content.paths."$pathToBeReplaced"
# Remove old key
$content.paths.PSObject.Properties.Remove($pathToBeReplaced)

现在让我们看看输出:

# Getting output
PS> $content.paths |fl
/api/v1/user/Assignments/GetUserAssignmentDetails : value
/user/Assignments/GetStatus                       : value
/Grades/GetGradesByProduct                        : value
/abc/v1/user/Answers                              : @{answer1=something; answer2=something else}

最新更新