如何在PowerShell中正确使用DataContractJsonSerializer类?

时间:2011-12-06 15:35:57

标签: .net json powershell powershell-v2.0

我正在尝试在powershell 2.0中使用json字符串并将其转换为PowerShell对象。

$json = '{"test":"data","numerical":4,"nested":{"nested":true}}'
$ms = New-object IO.MemoryStream (,$utf8.GetBytes($json))
[type] $type = 'psobject'
$js = New-Object System.Runtime.Serialization.Json.DataContractJsonSerializer $type
write-host $js.ReadObject($ms)

这不会产生任何错误或输出。我该如何进一步调试?

1 个答案:

答案 0 :(得分:4)

这不起作用,因为PSObject类型没有与JSON对象匹配的属性。

一种选择是创建与数据匹配的.NET类型或结构以接受转换。

第二个选项是convert the JSON to XML using this,然后使用PowerShell读取XML。

我能想到的第三个选项是使用this project直接转换为对象。

<强> [编辑]

我也忘记了Jaykul汇总的剧本:JSON 1.7