json - PowerShell JSON 设置值
问题描述
伙计们,我确实在 PowerShell 中运行了一些 ReST api 调用并返回了一个
$response
page content
---- -------
@{size=20; number=0; totalPages=1; totalElements=1} {@{id=ZGR2ZS0yLnZsYWIubG9j…
当我转换为 JSON
PS C:\Users\Administrator\Documents> $response | 转换为 JSON
{
"page": {
"size": 20,
"number": 0,
"totalPages": 1,
"totalElements": 1
},
"content": [
{
"id": "ZGR2ZS0yLnZsYWIubG9jYWw6MzAwOTpob3N0",
"host": "ddve-2.vlab.local",
"port": "3009",
"notValidBefore": "Fri Mar 29 21:32:19 PDT 2019",
"notValidAfter": "Sat Mar 29 04:32:19 PDT 2025",
"fingerprint": "E1BB40B0284595297071177FE02BC9C76E85CD66",
"subjectName": "CN=ddve-2.vlab.local, O=Valued DataDomain customer, OU=Hos
t Certificate, ST=CA, C=US",
"issuerName": "CN=ddve-2.vlab.local, OU=Root CA, O=Valued Datadomain Custo
mer, L=Santa Clara, ST=CA, C=US",
"state": "ACCEPTED",
"type": "HOST"
}
]
}
an idividual value can be seen
PS C:\Users\Administrator\Documents> $response.content.state
ACCEPTED
但是设置新值失败
PS C:\Users\Administrator\Documents> $response.content.state = 123
InvalidOperation: The property 'state' cannot be found on this object. Verify th
at the property exists and can be set.
解决方案
因为您的content
属性是一个(单元素)数组(如其值包含在[ ... ]
JSON 表示中所证明的那样),您必须使用索引来指定要设置.state
的元素的属性:
$response.content[0].state = 123
请注意,获取值不需要索引(即,如您所说,$response.content.state
works 并返回"ACCEPTED"
),因为 PowerShell 然后应用成员 enumeration,这意味着它枚举state
数组的所有元素的属性值(使用单个-element 数组只返回单个元素的值,而多元素数组则返回一个值数组)。
在设置属性值时,不支持成员枚举的设计,尽管错误消息肯定会更有帮助 - 请参阅此答案。
推荐阅读
- python - python的文件位置宏(Jupyter notebook)
- angular - 从 Angular 应用程序外部化 Kendo UI 模块
- protocol-buffers - gRPC 和模式演化保证?
- .net-core - 使用工作负载安装 core3.1 VSBuildTools 离线安装程序 2017 的问题
- java - 谷歌地图标记和当前位置未显示
- javascript - 如何使用Javascript制作动态表格?
- python - Python subprocess.run inside Flask 应用程序失败 [Errno 2] 没有这样的文件或目录:'ls':'ls'
- python-3.x - 将通用功能编码为:禁用带有复选按钮的 tkinter 小部件
- vue.js - 使用 Vuejs 实现可重用的选项卡式组件
- javascript - 编写一个javascript函数计数(arr,回调)。它应该返回回调(箭头函数)为真的元素的数量