json - 使用 Powershell 处理包含多个对象的 JSON 文件
问题描述
我有一个名为 index.json 的 JSON 文件,如下所示:
{
"First": {
"href": "test/one two three.html",
"title": "title one"
},
"Second": {
"href": "test/test test/one two three four.html",
"title": "title two"
}
}
我想编写一个powershell脚本来更新每个对象的href以用-替换空格。
JSON 文件应如下所示:
{
"First": {
"href": "test/one-two-three.html",
"title": "title one"
},
"Second": {
"href": "test/test-test/one-two-three-four.html",
"title": "title two"
}
}
我从这篇文章中得到了一些帮助: 迭代 JSON 文件 PowerShell
我已经编写了一个脚本来获取所有的 href 值,我不知道如何在原始 JSON 文件中更新相同的值。我的脚本如下所示:
function Get-ObjectMembers {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True, ValueFromPipeline=$True)]
[PSCustomObject]$obj
)
$obj | Get-Member -MemberType NoteProperty | ForEach-Object {
$key = $_.Name
[PSCustomObject]@{Key = $key; Value = $obj."$key"}
}
}
$a = Get-Content 'index.json' -raw | ConvertFrom-Json | Get-ObjectMembers
foreach($i in $a){
$i.Value.href.Replace(" ","-")
}
解决方案
我已经这样做了。
$path='index.json'
$Content= (Get-Content $path -raw | ConvertFrom-Json)
$memberNames=( $Content | Get-Member -MemberType NoteProperty).Name
foreach($memberName in $memberNames){
($Content.$memberName.href)=($Content.$memberName.href).Replace(" ","-")
}
$Content | ConvertTo-Json | Out-File $path -Append
推荐阅读
- c# - 问题更新到 .Net 6 - 加密字符串
- itfoxtec-identity-saml2 - 调用 Saml2PostBinding.Unbind() 时签名无效
- c# - “建议使用 nuget 包中的类型” - 如何建议我的 NuGet 包?
- reactjs - ES7 React/Redux/GraphQL/React-Native 片段不工作
- python - Tensorflow 条件 x==y 错误:A InvalidArgumentError
- javascript - 日期在 Safari 浏览器 Angular 7 中不可见
- python - 将参数插入映射函数python
- java - 如何使用 spring 创建 NTLM 身份验证
- google-bigquery - 将 Xilnex 的实时数据连接到 Google Big Query
- python - Python numpy 从 (n,) 重塑为 (n, 1 , 1)