当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 PowerShell 中将 JSON 文件读入数组?

作者:精品下载站 日期:2024-12-14 05:07:31 浏览:15 分类:玩电脑

如何在 PowerShell 中将 JSON 文件读入数组?


JSON(JavaScript 对象表示法)是一种轻量级数据交换格式,易于人类阅读和编写,也易于机器解析和生成。在本 PowerShell 教程中,我将解释如何在 PowerShell 中将 JSON 文件读入数组

要将 JSON 文件读入 PowerShell 中的数组,请使用 Get-Content cmdlet 检索文件内容并将其通过管道传输到 ConvertFrom-Json cmdlet。例如,$array=Get-Content -Path ‘file.json’|如果 JSON 是数组格式,ConvertFrom-Json 会将 JSON 文件解析为 PowerShell 数组。

理解 JSON

在深入了解 PowerShell 之前,让我们先了解一下 JSON 文件的结构。 JSON 文件通常由结构化格式的键值对组成。它可以包含对象(由大括号 {} 表示)和数组(由方括号 [] 表示)。以下是 JSON 文件的简单示例:

{
  "users": [
    {"name": "John", "age": 30},
    {"name": "Jane", "age": 25},
    {"name": "Doe", "age": 22}
  ]
}

在此示例中,users 是一个对象数组,每个对象都包含一个name 和一个age

将 JSON 读入 PowerShell 数组

要将 JSON 数据读取到 PowerShell 中的数组中,我们使用 ConvertFrom-Json cmdlet,它将 JSON 格式的字符串转换为 PowerShell 对象。

方法 1:使用 Get-Content 和 ConvertFrom-Json

在 PowerShell 中将 JSON 文件读入数组的最常见方法是使用 Get-Content 获取文件的内容,然后将其通过管道传输到 ConvertFrom-Json

这是一个分步示例:

  1. 保存您的 JSON 文件。在本例中,我们将其命名为users.json
  2. 打开 PowerShell 并输入以下命令:
$jsonData = Get-Content -Path 'C:\Bijay\users.json' | ConvertFrom-Json
  1. 现在,$jsonData 将 JSON 文件的内容包含为 PowerShell 对象。要访问 users 数组,您只需使用 $jsonData.users 即可。
$usersArray = $jsonData.users
  1. 您可以循环遍历数组并访问每个用户的属性,如下所示:
foreach ($user in $usersArray) {
  Write-Host "Name: $($user.name), Age: $($user.age)"
}

您可以看到我使用 VS code 执行 PowerShell 脚本后的输出。

$jsonData = Get-Content -Path 'C:\Bijay\users.json' | ConvertFrom-Json
$usersArray = $jsonData.users
foreach ($user in $usersArray) {
    Write-Host "Name: $($user.name), Age: $($user.age)"
  }

[玩转系统] 如何在 PowerShell 中将 JSON 文件读入数组?

方法二:直接使用ConvertFrom-Json

在 PowerShell 中读取 JSON 文件的另一种方法是直接使用 ConvertFrom-Json-InputObject 参数。

$jsonContent = Get-Content -Path 'C:\path\to\your\users.json' -Raw
$jsonData = $jsonContent | ConvertFrom-Json

-Raw 参数确保 Get-Content 将文件作为单个字符串读取,这是 ConvertFrom-Json 解析 JSON 结构所必需的适当地。

方法 3:使用自定义对象处理 JSON

有时,您可能希望将 JSON 数据直接转换为自定义 PowerShell 对象。这可以通过在 PowerShell 中定义一个类,然后使用 ConvertFrom-Json 将 JSON 直接转换为该类的对象来完成。

class User {
  [string]$name
  [int]$age
}

$jsonData = Get-Content -Path 'C:\path\to\your\users.json' | ConvertFrom-Json

$usersArray = @($jsonData.users | ForEach-Object {
  $_ | ConvertTo-Json | ConvertFrom-Json -As [User]
})

在此示例中,ConvertTo-Json 用于将每个用户转换为 JSON 字符串,然后使用 -As 将其通过管道传输到 ConvertFrom-Json > 参数指定自定义类User

尖端 :

  • 读取 JSON 文件时,始终将 -Raw 参数与 Get-Content 结合使用,以确保将整个文件作为单个字符串读取。
  • 使用Write-HostWrite-Output将数组的内容打印到控制台以进行调试。
  • PowerShell 不区分大小写,但 JSON 密钥区分大小写。引用 JSON 键时请确保大小写匹配。
  • 在尝试使用 PowerShell 解析 JSON 文件之前,使用 JSON 验证器验证 JSON 文件,以确保其格式正确。

结论

在 PowerShell 中将 JSON 数据读入数组是一个简单的过程。无论您是同时使用 Get-ContentConvertFrom-Json 还是使用自定义对象处理 JSON 数据,PowerShell 都提供了处理 JSON 文件的灵活性。

在此 PowerShell 教程中,我解释了如何在 PowerShell 中将 JSON 文件读入数组

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯