比较PowerShell和Python生成的Windows PowerShell中的两个JSON对象

时间:2014-06-06 03:11:41

标签: python json powershell

我试图将.Net PowerShell代码移植到Python。为了确保python代码正确,我测试PowerShell输出与Python输出。

在powershell中我有

$ps_output = PowerShell-Function $log_path
$python_output = Python-Function $log_path
($ps_output -eq $python_output)

如果我运行compare-object,我得

InputObject                                                                                                 SideIndicator                                                                                              
-----------                                                                                                 -------------                                                                                              
The Python Win32 extensions for NT (service, event logging) appear not to be available.                     =>                                                                                                         
[{'blocks': '5860533168', 'sn': 'PN2234J4T5DR', 'fw': 'MF8OAC0', 'device': 'da1', 'data': ['@{n... =>                                                                                                         
[{"bay":"1","device":"da1","make":"HGST","type":"HUS724030ALA640","fw":"MF8OAC0","sn":"PN2234J4T5DR",... <=  

我合理地确定等式检查失败的原因是因为键值对的顺序与python不同,而不是PowerShell。

所以我正在寻找一种方法来测试powershell中json对象之间的相等性,或者以与powershell输出相匹配的方式命令我的python生成json。

我尝试过使用OrderedDict。这有两个问题:放

[OrderedDict{...

在字符串前面并且还使代码非常脆弱(因为我将依赖于何时将某些内容添加到字典中)。

1 个答案:

答案 0 :(得分:3)

您是尝试先使用ConvertFrom-Json转换为PowerShell对象,然后使用Compare-Object吗?

$ps_output = PowerShell-Function $log_path
$python_output = Python-Function $log_path
$po_ps_output = $ps_output | ConvertFrom-Json
$po_python_output = $python_output | ConvertFrom-Json
Compare-Object $po_ps_output $po_python_output