也不知道我是如何停止担心,学会了喜欢上了收集的弦
给定以下两个json字符串:
$jsonString1 = '{ "baz": "quuz", "cow": [ "moo", "CUD" ], "foo": "bar" }'
$jsonstring2 = '{ "baz": "quuz", "cow": [ "moo", "GRASS" ], "foo": "bar" }'我想要了解它们所表示的对象之间的差异
<# First attempt: Convert each to an object, then compare normally #>
function Compare-Json {
<# Make powershell objects from each string #>
$obj1 = $jsonString1 | ConvertFrom-Json
$obj2 = $jsonstring2 | ConvertFrom-Json
Compare-Object $obj1 $obj2
}
PS E:\temp> Compare-Json
PS E:\temp> 是的,这根本就不是输出。
当前的解决方法是将json转换为对象,再转换回字符串,然后拆分字符串,最后比较每个集合。
function Compare-Json {
<# Convert to pretty json, then split to make a string array #>
$obj1 = $($jsonString1 | ConvertFrom-Json | ConvertTo-Json) -split ([Environment]::NewLine)
$obj2 = $($jsonstring2 | ConvertFrom-Json | ConvertTo-Json) -split ([Environment]::NewLine)
Compare-Object $obj1 $obj2
}
PS E:\temp> Compare-Json
InputObject SideIndicator
----------- -------------
"GRASS" =>
"CUD" <=
PS E:\temp> 有没有更简单的方法来深入比较两个对象?
发布于 2014-07-17 06:06:29
不知道这是不是更好,但是:
$jsonString1 = '{ "baz": "quuz", "cow": [ "moo", "CUD" ], "foo": "bar" }'
$jsonstring2 = '{ "baz": "quuz", "cow": [ "moo", "GRASS" ], "foo": "bar" }'
compare $jsonString1.split(',:[]{}') $jsonString2.split(',:[]{}')
InputObject SideIndicator
----------- -------------
"GRASS" =>
"CUD" <= https://stackoverflow.com/questions/24790099
复制相似问题