小编Mic*_*ppe的帖子

使用javascriptSerializer在powershell 2.0中使用Json循环引用

我在powershell 2.0中编写脚本,目前无法升级到3.0或更高版本.在这个脚本中,我尝试使用此链接中的代码将一些数据序列化为JSON(PowerShell 2.0 ConvertFrom-Json和ConvertTo-Json实现):

function ConvertTo-Json20([object] $item){
    add-type -assembly system.web.extensions
    $ps_js=new-object system.web.script.serialization.javascriptSerializer
    return $ps_js.Serialize($item)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我以某种方式获得循环引用,我真的不知道为什么.我设置了一小段测试数据,结构在powershell中看起来像这样:

$testRoot = @{
    "id" = "1"
    "children" = @( 
        @{
            "id" = "2"
            "children" = @( 
                @{
                    "id" = "2";
                };
                @{
                    "id" = "3";
                }
            );
        };
        @{
            "id" = "4"
            "children" = @( 
                @{
                    "id" = "5";
                }
            );
        }
    )
}
Run Code Online (Sandbox Code Playgroud)

我知道它看起来很垃圾,但我只需要这种格式.

我需要序列化的结构有更多的层,所以更多的"孩子",并有它变得奇怪的点.

当我尝试这个:

ConvertTo-Json20 $testRoot
Run Code Online (Sandbox Code Playgroud)

一切正常.结构被解析如下:

{
   "id":"1",
   "children":[
        {
            "id":"2",
            "children":[
               {
                   "id":"2"
               },
               {
                   "id":"3"
               } …
Run Code Online (Sandbox Code Playgroud)

powershell json powershell-2.0 javascriptserializer

7
推荐指数
1
解决办法
486
查看次数