首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell: Compare-object not Compare嵌套对象

Powershell: Compare-object not Compare嵌套对象
EN

Stack Overflow用户
提问于 2014-07-17 04:30:21
回答 1查看 1.9K关注 0票数 4

也不知道我是如何停止担心,学会了喜欢上了收集的弦

给定以下两个json字符串:

代码语言:javascript
复制
$jsonString1 = '{ "baz": "quuz", "cow": [ "moo", "CUD" ], "foo": "bar" }'
$jsonstring2 = '{ "baz": "quuz", "cow": [ "moo", "GRASS" ], "foo": "bar" }'

我想要了解它们所表示的对象之间的差异

代码语言:javascript
复制
<# 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转换为对象,再转换回字符串,然后拆分字符串,最后比较每个集合。

代码语言:javascript
复制
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> 

有没有更简单的方法来深入比较两个对象?

EN

回答 1

Stack Overflow用户

发布于 2014-07-17 06:06:29

不知道这是不是更好,但是:

代码语言:javascript
复制
$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"                                               <=                                                 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24790099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档