关于本文
本文是通过利用生成式 AI 的自动化生成流程创建的。我们确认了 PowerShell 的 JSON 转换规范,并将其整理为一个极简示例,用于将虚拟 JSON 转换为对象并观察其类型和值。
验证状态:📘 已确认 Microsoft 官方规范・未在 PowerShell 实机上验证
在 PowerShell 中处理 JSON 时,比起观察字符串的外观,查看 ConvertFrom-Json 之后的对象结构会更容易理解。
首先尝试
$json = '{"name":"papanda","settings":{"retry":3,"enabled":true}}'
$obj = $json | ConvertFrom-Json
$obj
$obj.settings.retry
$obj.settings.enabled.GetType().FullName
retry 作为数值处理,而 enabled 作为布尔值处理。
修改一处试试
"retry":3 将其更改为 "retry":"3"。虽然显示效果相似,但类型已经改变了。
$obj.settings.retry.GetType().FullName
为什么这很重要
在 API 和配置文件中,3 与 "3" 是截然不同的。由于在比较、加法和验证处理中可能会导致非预期的结果,因此养成同时检查值和类型的习惯会很有帮助。
如果在工作中应用
在检查 Graph API 的响应、配置备份或 CI/CD 的 JSON 时,请先显示目标属性和类型,然后再进行处理。切勿盲目直接更新庞大的 JSON,请先以只读方式确认其结构。
在可复用版本中,我们还额外增加了用于将 port 在数值和字符串之间切换的参数、所有属性的类型一览,以及当类型与预期不符时的 [FAILED] 显示。在通过文章中的简短示例理解了类型差异后,您可以进入更接近实战的检查环节。
总结
与其将 JSON 视作字符串来浏览,不如将其转换为 PowerShell 对象并观察其值和类型,这样可以减少出错。不妨尝试将单个值更改为字符串,并确认其在处理上的区别。
官方资料
- Microsoft Learn: ConvertFrom-Json

