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

[玩转系统] 如何在 PowerShell 中将字符串转换为 JSON?

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

如何在 PowerShell 中将字符串转换为 JSON?


最近,我的一位客户要求我将自动化脚本的字符串转换为 JSON。我在PowerShell中尝试了各种方法。在本 PowerShell 教程中,我将向您展示如何使用不同的方法在 PowerShell 中将字符串转换为 JSON。

要在 PowerShell 中将字符串转换为 JSON,最常见、最直接的方法是使用 ConvertTo-Json cmdlet。此 cmdlet 将 PowerShell 对象作为输入并将其转换为 JSON 格式的字符串。例如,您可以创建一个包含美国城市数据的哈希表,并将其转换为 JSON,如下所示: $cityData=@{ “New York”=@{ “Population”=8336817 }; “洛杉矶”=@{ “人口”=3898747 } }; $jsonString=$cityData |转换为 Json。

方法 1:使用 ConvertTo-Json Cmdlet

PowerShell 提供 ConvertTo-Json cmdlet 将 PowerShell 对象转换为 JSON 格式。此方法非常易于使用,大多数 PowerShell 开发人员都使用它来处理 JSON 对象。

这是一个例子。

$cityData = @{
    "New York" = @{
        "Population" = 8336817
        "State" = "New York"
    }
    "Los Angeles" = @{
        "Population" = 3898747
        "State" = "California"
    }
    "Chicago" = @{
        "Population" = 2746388
        "State" = "Illinois"
    }
}

$jsonString = $cityData | ConvertTo-Json
Write-Output $jsonString

该脚本创建一个哈希表,然后将其转换为 JSON 字符串。

我执行了上面的PowerShell脚本,你可以看到它显示了JSON;看下面的截图:

[玩转系统] 如何在 PowerShell 中将字符串转换为 JSON?

阅读在 PowerShell 中将字符串转换为哈希表

方法 2:使用 Here-Strings

如果 JSON 结构有点复杂,您可以使用以下另一种方法。您可以将此处字符串与预格式化的 JSON 一起使用,这样可以提高可读性:

您可以看到下面的屏幕截图:

$jsonString = @"
{
    "NationalParks": [
        {
            "Name": "Yellowstone",
            "State": "Wyoming",
            "EstablishedYear": 1872
        },
        {
            "Name": "Yosemite",
            "State": "California",
            "EstablishedYear": 1890
        },
        {
            "Name": "Grand Canyon",
            "State": "Arizona",
            "EstablishedYear": 1919
        }
    ]
}
"@

$jsonObject = $jsonString | ConvertFrom-Json
Write-Output $jsonObject.NationalParks

此示例创建一个 JSON 字符串,然后将其转换为 PowerShell 对象以进行进一步操作。

阅读在 PowerShell 中将字符串转换为 Int

方法 3:使用自定义对象

您还可以创建自定义 PowerShell 对象并将其转换为 JSON:

$usCapitals = @(
    [PSCustomObject]@{
        City = "Washington D.C."
        Type = "Federal Capital"
        Population = 689545
    },
    [PSCustomObject]@{
        City = "Albany"
        Type = "State Capital"
        State = "New York"
        Population = 96460
    },
    [PSCustomObject]@{
        City = "Sacramento"
        Type = "State Capital"
        State = "California"
        Population = 508529
    }
)

$jsonString = $usCapitals | ConvertTo-Json
Write-Output $jsonString

此脚本创建自定义对象数组并将其转换为 JSON。

方法四:处理特殊字符

在处理包含特殊字符的字符串时,确保正确的转义非常重要。这是一个完整的示例和脚本。

$cityDescription = @{
    "New Orleans" = "Known for its vibrant music scene & Mardi Gras"
    "San Francisco" = "Famous for the Golden Gate Bridge & cable cars"
    "Nashville" = "Home of country music & the \"Grand Ole Opry\""
}

$jsonString = $cityDescription | ConvertTo-Json -EscapeHandling EscapeNonAscii
Write-Output $jsonString

此示例说明如何处理 JSON 转换中的特殊字符和引号。

这里还有另一个例子。

# Sample object with special characters
$data = @{
    Name = "Müller"
    City = "München"
    Description = "Café `"`"Zum schönen Müller`"`""
}

# Convert the object to JSON
$json = $data | ConvertTo-Json

# Output the JSON
$json

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

验证 JSON 文件

将字符串转换为 JSON 后,验证其正确性至关重要。 PowerShell 为此提供了 Test-Json cmdlet:

$jsonString = '{"Boston": {"Nickname": "The Hub", "State": "Massachusetts"}}'
$isValid = Test-Json $jsonString

if ($isValid) {
    Write-Output "The JSON is valid."
} else {
    Write-Output "The JSON is not valid."
}

该脚本根据 JSON 标准检查生成的 JSON 字符串是否有效。

您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何在 PowerShell 中将字符串转换为 JSON?

结论

在本教程中,我解释了如何使用不同的方法在 PowerShell 中将字符串转换为 JSON,例如:

  • 使用 ConvertTo-Json Cmdlet
  • 使用此处字符串
  • 使用自定义对象等

我还解释了如何使用 Test-Json PowerShell cmdlet 验证 JSON 输出。

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

取消回复欢迎 发表评论:

关灯