PowerShell ConvertTo-Json
最后修改:2025 年 2 月 15 日
在本文中,我们将介绍PowerShell中的ConvertTo-Json
cmdlet。此cmdlet将对象转换为JSON格式的字符串。JSON广泛用于系统和应用程序之间的数据交换。
JSON基础
JSON(JavaScript对象表示法)是一种轻量级的数据交换格式。它易于人类阅读和编写,也易于机器解析和生成。JSON将数据表示为键值对和有序的值列表。PowerShell可以使用ConvertTo-Json和ConvertFrom-Json处理JSON数据。
ConvertTo-Json基本用法
使用ConvertTo-Json
的最简单方法是处理基本对象。此cmdlet将PowerShell对象转换为JSON字符串。默认情况下,它会创建紧凑的JSON表示,不带额外的空格。
$person = @{ Name = "John Doe" Age = 35 Occupation = "Developer" } $person | ConvertTo-Json
此命令创建一个哈希表并将其转换为JSON。输出是一个包含对象JSON表示形式的字符串。
PS C:\> .\json1.ps1 { "Name": "John Doe", "Age": 35, "Occupation": "Developer" }
格式化JSON输出
您可以使用-Depth参数控制JSON输出的格式。它指定JSON中包含多少层级的嵌套对象。默认深度为2。对于复杂对象,您可能需要增加此值。
$company = @{ Name = "TechCorp" Employees = @( @{Name="Alice"; Position="Manager"}, @{Name="Bob"; Position="Developer"} ) } $company | ConvertTo-Json -Depth 3
此示例显示了需要深度为3的嵌套对象。如果深度不足,某些数据在JSON输出中可能会被截断。
美化JSON输出
为了提高可读性,您可以将-Compress参数设置为$false来美化JSON输出。这将为输出添加缩进和换行符。默认值为$true,会生成紧凑的JSON。
$data = @{ Server = "DB01" Services = @("MySQL", "Redis", "MongoDB") Status = "Active" } $data | ConvertTo-Json -Compress $false
此命令会生成格式正确的JSON输出,带有适当的缩进。输出更容易阅读,但比压缩的JSON占用更多空间。
将进程信息转换为JSON
您可以将ConvertTo-Json
与其他cmdlet(如Get-Process)结合使用。这对于以机器可读的格式导出系统信息非常有用。JSON输出可以被其他应用程序使用或存储在文件中。
Get-Process -Name "chrome" | Select-Object Name, Id, CPU, WorkingSet | ConvertTo-Json -Depth 2
此命令获取Chrome进程,选择特定属性,然后将其转换为JSON。输出可用于监控或分析目的。
处理特殊字符
ConvertTo-Json
会自动转义字符串中的特殊字符。这包括引号、反斜杠和控制字符。无论输入字符串的内容如何,JSON输出都将保持有效。
$text = @{ Message = "This string contains `"quotes`" and \backslashes\" } $text | ConvertTo-Json
此cmdlet会在输出的JSON中正确转义引号和反斜杠。这确保了JSON的有效性,并且可以被正确解析。
自定义对象转换
您可以将自定义PowerShell对象转换为JSON。这对于哈希表和PSObjects都有效。转换会保留JSON输出中的对象结构和属性名称。
$car = [PSCustomObject]@{ Make = "Toyota" Model = "Camry" Year = 2022 Features = @("GPS", "Bluetooth", "Backup Camera") } $car | ConvertTo-Json -Depth 2
此示例创建了一个自定义对象并将其转换为JSON。功能数组在JSON输出中得到了正确表示。
在JSON中使用日期
日期对象默认会转换为ISO 8601格式的JSON字符串。这是一种被广泛支持的标准日期表示法。您可以在需要时将这些字符串解析回DateTime对象。
$event = @{ Name = "Conference" Date = Get-Date Location = "New York" } $event | ConvertTo-Json
JSON输出中的日期将采用ISO格式。这确保了与使用JSON的其他系统和编程语言的兼容性。
来源
在本文中,我们介绍了PowerShell中的ConvertTo-Json cmdlet。
作者
列出 所有 PowerShell 教程。