如何在 PowerShell 中创建 Json?
我认为这与在 PowerShell 中创建 Xml 类似,但它不起作用:
[Json]$MyJsonVariable = @"
{
"MyList"{
"Item1" {
"Name": "AMD Ryzen 5 3600x"
"Type":"CPU"
"Price":"`$69.99"
"Where":"Amazon.com"
}
}
}
"@
Run Code Online (Sandbox Code Playgroud)
但这没有用:
Unable to find type [Json].
At line:1 char:1
+ [Json]$MyJsonVariable = @"
+ ~~~~~~
+ CategoryInfo : InvalidOperation: (Json:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
Run Code Online (Sandbox Code Playgroud)
请帮助
小智 21
尝试一下:
$MyJsonHashTable = @{
'MyList' = @{
'Item1' = @{
'Name' = 'AMD Ryzen 5 3600x'
'Type' = 'CPU'
'Price' = '$69.99'
'Where' = 'Amazon.com'
}
}
}
$MyJsonVariable = $MyJsonHashTable | ConvertTo-Json
$err = $null
$MyJsonObject = [Microsoft.PowerShell.Commands.JsonObject]::ConvertFromJson($MyJsonVariable, [ref]$err)
Run Code Online (Sandbox Code Playgroud)
结果是$MyJsonVariable包含 Json 字符串的 a:
{
"MyList": {
"Item1": {
"Price": "$69.99",
"Where": "Amazon.com",
"Name": "AMD Ryzen 5 3600x",
"Type": "CPU"
}
}
}
Run Code Online (Sandbox Code Playgroud)
以及$MyJsonObject包含 Json 对象引用的 a:
MyList
------
@{Item1=}
Run Code Online (Sandbox Code Playgroud)
我怀疑这 3 个 PowerShell 变量之一应该适合您的 Json 需求。
希望这可以帮助。
Nic*_*oru 13
与其他答案所示一样,您可以使用 PowerShell 哈希表作为 JSON,但是,PowerShell 确实有一种使用 JSON 的方法。
首先,即使 Powershell 中有 JSON 数据类型,您仍然会收到 JSON 语法错误。您的 JSON 应该如下所示:
$MyJsonVariable = @"
{
"MyList":{
"Item1":{
"Name":"AMD Ryzen 5 3600x",
"Type":"CPU",
"Price":"`$69.99",
"Where":"Amazon.com"
}
}
}
"@
Run Code Online (Sandbox Code Playgroud)
请注意大括号前的逗号和冒号。
定义此变量后,我们可以使用ConvertFrom-JSONcmdlet 将其转换为实际的 JSON:
$MyJsonVariable = $MyJsonVariable | ConvertFrom-JSON
Run Code Online (Sandbox Code Playgroud)
这会将其转换为 JSON:
PS C:\> $MyJsonVariable.MyList
Item1
-----
@{Name=AMD Ryzen 5 3600x; Type=CPU; Price=$69.99; Where=Amazon.com}
PS C:\> $MyJsonVariable.MyList.Item1
Name Type Price Where
---- ---- ----- -----
AMD Ryzen 5 3600x CPU $69.99 Amazon.com
PS C:\> $MyJsonVariable.MyList.Item1.Where
Amazon.com
Run Code Online (Sandbox Code Playgroud)
要查看它的结构,您可以使用 cmdlet ConvertTo-JSON:
PS C:\> $testjson | ConvertTo-Json
{
"MyList": {
"Item1": {
"Name": "AMD Ryzen 5 3600x",
"Type": "CPU",
"Price": "$69.99",
"Where": "Amazon.com"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39157 次 |
| 最近记录: |