gpt4 book ai didi

json - 如何使用Json.NET在PowerShell中解析json?

转载 作者:行者123 更新时间:2023-12-04 09:32:01 25 4
gpt4 key购买 nike

我想在PowerShell中解析JSON,但无法使用PowerShell中可用的新v3函数。我的第一个想法是加载JSON.Net程序集,并使用它来解析JSON字符串,但是它不起作用,正如我期望的那样。

我有这个JSON:

$json = "{""Name"": ""Apple"",  
""Price"": 3.99,
""Sizes"": [
""Small"",
""Medium"",
""Large""]}"

我用以下代码加载JSON.NET程序集:
[Reflection.Assembly]::LoadFile("$currentPath\Newtonsoft.Json.dll”)

并尝试与解析
$result = [Newtonsoft.Json.JsonConvert]::DeserializeObject($json)

现在我希望 $result["Name"]Apple,但是我什么也没收到。有任何想法吗?

代码´$ result.ContainsKey(“Name”) returnsbut $ result.GetValue(“Name”) returns null`。

最佳答案

好的,这就是我的操作方式,因此它至少可以在Windows 2008上运行到PowerShell v2。

首先,为您要使用的版本加载Json.NET程序集,我选择了.NET 3.5版本:

[Reflection.Assembly]::LoadFile("Newtonsoft.Json.dll")

我将JSON保存在文件中,因为它已在我编写的部署配置中使用,因此我需要读取文件,然后解析json
$json = (Get-Content $FileName | Out-String) # read file
$config = [Newtonsoft.Json.Linq.JObject]::Parse($json) # parse string

现在,要从配置中获取值,您需要使用 Item方法,该方法似乎是PowerShell在哈希表/字典上定义的。因此,要获得一个简单字符串的项目,您可以编写:
Write-Host $config.Item("SomeStringKeyInJson").ToString()

如果您有各种各样的事情,则需要做类似的事情
$config.Item("SomeKeyToAnArray") | ForEach-Object { Write-Host $_.Item("SomeKeyInArrayItem").ToString() }

要访问您编写的嵌套项目
$config.Item("SomeItem").Item("NestedItem")

这就是我解决了在PowerShell中使用Json.NET解析JSON的方式。

关于json - 如何使用Json.NET在PowerShell中解析json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13968004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com