繁体   English   中英

使用PowerShell处理JSON字符串

[英]Using PowerShell to process a JSON string

假设我在PowerShell字符串中有一段JSON,例如

$s = '{"foo":"hello"}'

我的目标是将其转换为我可以操作的对象(例如,更改/添加属性),然后转换回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

问题是我从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

值得注意的是,根据您的PowerShell版本,Add-Member行可以简化为:

$o | Add-Member 'bar' 'World'

我不确定哪种语法可以接受,但我知道它适用于v4,我认为它适用于v3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM