PowerShell中如何从字符串转换为JSON并按名称访问JSON字段?
解决PowerShell中访问JSON字段的问题
你这里踩了个典型的JSON转换方向错误的坑!咱们一步步捋清楚:
问题根源
你手里的$body已经是JSON格式的字符串了,但你却用了ConvertTo-Json——这个 cmdlet 的作用是把PowerShell对象转换成JSON字符串,反过来用的话,只会把你的JSON字符串再套一层引号变成新的字符串,自然没法用.来访问属性。
正确的做法是用ConvertFrom-Json,它能把JSON字符串解析成PowerShell可以直接操作的自定义对象。
修正后的代码
$body = @" { "uuid": "Test07", "subject": "Template07-Subject" } "@ # 核心修正:用ConvertFrom-Json解析JSON字符串为对象 $bodyObject = $body | ConvertFrom-Json # 两种正确的属性访问方式 Write-Host "uuid=$($bodyObject.uuid)" # 如果字段名包含特殊字符,也可以用单引号包裹字段名 Write-Host "uuid=$($bodyObject.'uuid')"
执行结果
运行上面的代码会输出:
uuid=Test07 uuid=Test07
额外小提示
你原来的JSON字符串末尾多了个逗号("subject": "Template07-Subject",),虽然有些解析器能兼容,但严格来说这是无效JSON,建议去掉,避免后续出现意外问题。
内容的提问来源于stack exchange,提问作者NealWalters
相关产品推荐
相关产品推荐

