首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell ConvertTo-JSON缺少嵌套级别

Powershell ConvertTo-JSON缺少嵌套级别
EN

Stack Overflow用户
提问于 2014-03-08 04:46:00
回答 1查看 12.6K关注 0票数 19

看起来Powershell在导出到JSON时,如果数据嵌套太深,就会切断数据。我的对象层次结构如下所示:

代码语言:javascript
复制
Main Object
    Metadata
    More Metadata
    Collection of Other object Sources
        Collection of data used by these sources

由于某些原因,当我转换为JSON时,powershell将第三级(这些源使用的数据集合)导出为一个空字符串,即使它是一个添加了各种NoteProperties的对象数组。例如:

代码语言:javascript
复制
$test = New-Object -TypeName PSObject

$obj = New-Object -TypeName PSObject
$obj | Add-Member -MemberType NoteProperty -Name "Name" -Value "adsf"

$test2 = New-Object -TypeName PSObject
$test2 | Add-Member -MemberType NoteProperty -Name "ArrayTest" -Value @($obj, $obj)

$test3 = New-Object -TypeName PSObject
$test3 | Add-Member -MemberType NoteProperty -Name "ArrayTest" -Value @($obj, $obj, $obj)

$test | Add-Member -MemberType NoteProperty -Name "CollectionTest" -Value @($test2, $test3)

这将产生以下JSON字符串:

代码语言:javascript
复制
PS C:\Users\user\projects\Powershell> $test | ConvertTo-Json
{
    "CollectionTest":  [
                           {
                               "ArrayTest":  " "
                           },
                           {
                               "ArrayTest":  "  "
                           }
                       ]
}

转换为XML会导致类似的情况:

代码语言:javascript
复制
<?xml version="1.0"?>
<Objects>
  <Object Type="System.Management.Automation.PSCustomObject">
    <Property Name="CollectionTest" Type="System.Object[]">
      <Property Type="System.Management.Automation.PSCustomObject">
        <Property Type="System.String">@{ArrayTest=System.Object[]}</Property>
        <Property Name="ArrayTest" Type="System.Management.Automation.PSNoteProperty">System.Object[]</Property>
      </Property>
      <Property Type="System.Management.Automation.PSCustomObject">
        <Property Type="System.String">@{ArrayTest=System.Object[]}</Property>
        <Property Name="ArrayTest" Type="System.Management.Automation.PSNoteProperty">System.Object[]</Property>
      </Property>
    </Property>
  </Object>
</Objects>

powershell中是否存在某种对象嵌套限制?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-08 05:02:36

从Get-Help ConvertTo-JSON:

-Depth

指定在JSON表示中包含多少级别的包含对象。默认值为2。

设置您的-Depth参数,无论您需要保留数据的深度。

票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22260343

复制
相关文章

相似问题

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