假设我在PowerShell字符串中有一段JSON,例如
$s = '{"foo":"hello"}'
Run Code Online (Sandbox Code Playgroud)
我的目标是将其转换为我可以操作的对象(例如,更改/添加属性),然后转换回json字符串.
所以试着显而易见,我写道:
$o = $s | ConvertFrom-Json # convert the json string to an object
$o.foo = "hello2" # change an existing prop
$o.bar = "World" # add a new prop
$s2 = $o | ConvertTo-Json # convert back into a json string
Run Code Online (Sandbox Code Playgroud)
问题是我从中返回的对象ConvertFrom-Json是类型PSCustomObject,不允许添加属性.所以第3行爆发了:
Exception setting "bar": "The property 'bar' cannot be found on this object. Verify that the property exists and can be set."
At line:1 char:1
问题:在没有带来太多复杂性的情况下,最好的方法是什么?
自定义对象做允许您添加的属性,你就必须做是正确的.您需要Add-Member cmdlet.
$o = $s | ConvertFrom-Json # convert the json string to an object
$o.foo = "hello2" # change an existing prop
Add-Member -InputObject $o -MemberType NoteProperty -Name 'bar' -Value "World" # add a new prop
$s2 = $o | ConvertTo-Json # convert back into a json string
Run Code Online (Sandbox Code Playgroud)
值得注意的是,根据您的PowerShell版本,Add-Member行可以简化为:
$o | Add-Member 'bar' 'World'
Run Code Online (Sandbox Code Playgroud)
我不确定哪种语法可以接受,但我知道它适用于v4,我认为它适用于v3.
| 归档时间: |
|
| 查看次数: |
6357 次 |
| 最近记录: |