PowerShell ConvertFrom-Json
最后修改:2025 年 2 月 15 日
在本文中,我们将介绍 PowerShell 中的 ConvertFrom-Json
cmdlet。此 cmdlet 将 JSON 格式的字符串转换为 PowerShell 对象。它能够轻松地在脚本中解析和操作 JSON 数据。
JSON 基础知识
JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式。它使用人类可读的文本来存储和传输数据对象。JSON 以键值对和有序列表的形式表示数据。PowerShell 可以通过 ConvertFrom-Json
cmdlet 使用 JSON 数据。
ConvertFrom-Json 的基本用法
使用 ConvertFrom-Json
的最简单方法是使用 JSON 字符串。该 cmdlet 解析字符串并返回一个 PowerShell 对象。然后,此对象可以像任何其他 PowerShell 对象一样进行操作。JSON 必须格式正确。
$json = '{"name":"John","age":30,"city":"New York"}' $obj = $json | ConvertFrom-Json $obj
此命令将一个简单的 JSON 字符串转换为 PowerShell 对象。可以使用点表示法访问对象的属性。输出显示了解析后的数据。
访问 JSON 对象属性
将 JSON 转换为对象后,您可以直接访问其属性。使用点表示法引用嵌套属性。这允许轻松地从复杂的 JSON 结构中提取数据。属性名称区分大小写。
$json = '{"user":{"name":"Alice","email":"alice@example.com"}}' $obj = $json | ConvertFrom-Json $obj.user.name $obj.user.email
此示例显示了如何访问嵌套的 JSON 属性。用户对象包含 name 和 email 属性。这些属性通过点表示法访问。
处理 JSON 数组
JSON 数组会被转换为 PowerShell 对象数组。您可以遍历它们或按索引访问元素。数组会保留其在 JSON 源中的顺序。这对于处理项目列表很有用。
$json = '["red","green","blue"]' $colors = $json | ConvertFrom-Json $colors[0] $colors | ForEach-Object { "Color: $_" }
此示例演示了如何处理 JSON 数组。第一个元素通过索引访问。然后,在循环中处理所有元素。
解析复杂的 JSON 结构
ConvertFrom-Json
可以处理嵌套对象和数组。复杂的 JSON 结构会转换为具有嵌套属性的 PowerShell 对象。这会保留原始数据层次结构。您可以使用点表示法浏览结构。
$json = '{ "employees": [ {"name":"John", "skills":["PowerShell","C#"]}, {"name":"Jane", "skills":["Python","SQL"]} ] }' $obj = $json | ConvertFrom-Json $obj.employees[0].name $obj.employees[1].skills[0]
此示例解析了一个复杂的 JSON 结构。它包含一个员工对象数组,其中包含嵌套的技能数组。通过链式点表示法访问特定值。
从文件读取 JSON
JSON 数据通常来自文件。首先使用 Get-Content
读取文件。然后将内容通过管道传递给 ConvertFrom-Json
。这是处理配置文件或 API 响应的常用工作流程。
$jsonContent = Get-Content -Path "config.json" -Raw $config = $jsonContent | ConvertFrom-Json $config.settings
此脚本从文件读取 JSON 并将其转换为对象。-Raw 参数确保整个文件被读取为单个字符串。然后,配置对象可以在整个脚本中使用。
处理大型 JSON 数据
对于大型 JSON 文件,请使用 -Depth 参数。它控制转换多少层嵌套对象。默认深度为 1024。这可以防止非常深的结构导致堆栈溢出错误。
$bigJson = Get-Content -Path "large_data.json" -Raw $data = $bigJson | ConvertFrom-Json -Depth 50 $data.items[0].details
此示例显示了如何处理大型 JSON 文件。-Depth 参数设置为处理深度嵌套。然后访问第一个项目的详细信息。
使用 ConvertFrom-Json 进行错误处理
无效的 JSON 会导致解析错误。使用 try/catch 块可以优雅地处理这些错误。这确保了您的脚本能够对格式不正确的输入做出适当的响应。请始终尽可能验证 JSON 数据。
$badJson = '{"name": "Bob", "age": }' try { $obj = $badJson | ConvertFrom-Json $obj } catch { Write-Host "Error parsing JSON: $_" }
此示例演示了错误处理。格式错误的 JSON 会触发异常。catch 块会显示用户友好的错误消息。
来源
在本文中,我们介绍了 PowerShell 中的 ConvertFrom-Json cmdlet。
作者
列出 所有 PowerShell 教程。