栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

意外的ConvertTo-Json结果?答案:它的默认深度为2

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

意外的ConvertTo-Json结果?答案:它的默认深度为2

回答

ConvertTo-Json
有一个
-Depth
参数:

指定JSON表示形式中包含多少级包含的对象。
默认 值是 2

做一个完整的往返不同,需要增加一个JSON文件

-Depth
ConvertTo-Json
cmdlet的:

$Json | ConvertFrom-Json | ConvertTo-Json -Depth 9

TL; DR

可能是因为使用(.Net)完整类型名

ConvertTo-Json
终止了比默认值
-Depth
2
)更深的分支,因此程序员假定存在bug或cmdlet限制,并且不阅读帮助或大约。
我个人认为,在切除分支的末尾带有简单省略号(三个点:…)的字符串将具有更清晰的含义(另请参见:Github问题:8381)

为什么?

这个问题通常也以另一个讨论结尾: 为什么深度根本没有限制?

有些对象具有循环引用,这意味着子对象可以引用父项(或其子项之一),如果将其序列化为JSON则会导致无限循环。

以下面的哈希表为例,该哈希表具有

parent
指向对象本身的属性:

$Test = @{Guid = New-Guid}$Test.Parent = $Test

如果执行:

$Test | ConvertTo-Json
默认情况下,它将方便地停在2级深度:

{    "Guid":  "a274d017-5188-4d91-b960-023c06159dcc",    "Parent":  {        "Guid":  "a274d017-5188-4d91-b960-023c06159dcc",        "Parent":  { "Guid":  "a274d017-5188-4d91-b960-023c06159dcc", "Parent":  "System.Collections.Hashtable"        }    }}

这就是为什么自动将其

-Depth
设置为大量不是一个好主意的原因。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号