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

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

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

如何在 PowerShell 中将 JSON 写入文件?


在本 PowerShell 教程中,我将解释如何在 PowerShell 中将 JSON 写入文件。

要将 JSON 写入 PowerShell 中的文件,您可以使用 ConvertTo-Json cmdlet 将 PowerShell 对象转换为 JSON 字符串,然后使用 Out 将此字符串输出到文件-文件设置内容。例如:

$object | ConvertTo-Json | Set-Content -Path 'file.json'

对于大多数需要将 JSON 数据从 PowerShell 保存到文件的场景来说,此方法简单有效。

方法一:ConvertTo-Json 和 Out-File

要将 JSON 写入 PowerShell 中的文件,您可以使用 ConvertTo-Json cmdlet,它将 PowerShell 对象转换为 JSON 格式的字符串。转换后,您可以使用 Out-File cmdlet 将字符串输出到文件。

这是一个简单的例子:

# Create a PowerShell object
$person = @{
    FirstName = 'James'
    LastName = 'Karley'
    Age = 30
}

# Convert the object to a JSON string
$json = $person | ConvertTo-Json

# Write the JSON string to a file
$json | Out-File -FilePath 'C:\MyFolder\person.json'

此脚本创建一个代表人员的哈希表,将其转换为 JSON,并将其写入名为 person.json 的文件中。

在我使用 VS code 执行脚本后,您可以在下面的屏幕截图中看到输出。

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

查看如何在 PowerShell 中将 JSON 转换为 CSV?

方法二:ConvertTo-Json 和 Set-Content

Out-File 的替代方案是 PowerShell 中的 Set-Content cmdlet。当您需要确保正确设置文件编码(例如 JSON 数据通常需要的 UTF-8)时,它特别有用。

# Convert the object to a JSON string
$json = $person | ConvertTo-Json

# Write the JSON string to a file with UTF8 encoding
$json | Set-Content -Path 'person.json' -Encoding UTF8

此方法与前一种方法类似,但指定编码以防止 JSON 文件中的字符表示出现任何问题。

方法 3:使用 Add-Content 附加数据

如果需要将 JSON 数据附加到 PowerShell 中的现有文件,可以使用 Add-Content cmdlet。当记录或添加到文件中的 JSON 数组时,这特别有用。

# Additional person object
$additionalPerson = @{
    FirstName = 'Jane'
    LastName = 'Smith'
    Age = 25
}

# Convert the additional person to JSON
$additionalJson = $additionalPerson | ConvertTo-Json

# Append the JSON string to the existing file
$additionalJson | Add-Content -Path 'C:\MyFolder\person.json'

此脚本会将 additionalJson 内容添加到 people.json 文件中,而不覆盖现有数据。

您可以在下面的屏幕截图中看到我使用 VS code 执行 PowerShell 脚本后的输出。

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

方法4:复杂对象的Export-Clixml

对于可能包含 ConvertTo-Json 无法处理的属性的更复杂对象,您可以使用 Export-Clixml。此 cmdlet 将 PowerShell 对象导出到 XML 文件,可以使用 Import-Clixml 读回该文件。

# Export the object to an XML file
$person | Export-Clixml -Path 'person.clixml'

虽然不是严格意义上的 JSON,但包含此方法是为了完整性,因为它可以处理 JSON 可能无法处理的复杂序列化数据。

方法5:使用JSON.net库

要完全控制 JSON 序列化过程,您可以使用 Newtonsoft JSON.net 库。该库提供比内置 PowerShell cmdlet 更多的功能。

首先,您需要安装该库:

# Install the Newtonsoft.Json library
Install-Package -Name Newtonsoft.Json

然后,您可以使用它来序列化并写入 JSON 数据:

# Load the Newtonsoft.Json assembly
Add-Type -Path 'C:\path\to\Newtonsoft.Json.dll'

# Serialize the object to JSON using JsonConvert
$json = [Newtonsoft.Json.JsonConvert]::SerializeObject($person)

# Write the JSON string to a file
Set-Content -Path 'person.json' -Value $json -Encoding UTF8

当处理复杂的 JSON 结构或当您需要自定义 ConvertTo-Json cmdlet 提供的序列化过程之外的序列化过程时,此方法特别有用。

结论

PowerShell 提供了多种将 JSON 数据写入文件的方法。通过将 ConvertTo-Json cmdlet 与 Out-FileSet-Content 结合使用,您可以轻松序列化和保存 JSON 数据。对于附加数据,Add-Content 是您的首选 cmdlet。对于最复杂的场景,利用 JSON.net 库可以让您灵活且强大地在 PowerShell 中精确管理 JSON 序列化。

在本 PowerShell 教程中,我解释了如何使用不同的方法将 JSON 写入 PowerShell 中的文件

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

取消回复欢迎 发表评论:

关灯