我试图将.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{...
在字符串前面并且还使代码非常脆弱(因为我将依赖于何时将某些内容添加到字典中)。
答案 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