Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
格式化PSCustomObject以转换为JSON_Json_Powershell - Fatal编程技术网

格式化PSCustomObject以转换为JSON

格式化PSCustomObject以转换为JSON,json,powershell,Json,Powershell,我正在尝试创建一个PSCustomObject,稍后将通过管道转换为JSON,但我似乎无法正确设置PSCustomObject的格式。问题似乎在于,我希望生成的JSON的格式化方式包括一个锯齿状数组,但我无法理解正确的Powershell语法 这是我所拥有的 $RetrievalParamsBodyObj = [PSCustomObject]@{ things = @(@{ field="date_created" oper

我正在尝试创建一个PSCustomObject,稍后将通过管道
转换为JSON
,但我似乎无法正确设置PSCustomObject的格式。问题似乎在于,我希望生成的JSON的格式化方式包括一个锯齿状数组,但我无法理解正确的Powershell语法

这是我所拥有的

$RetrievalParamsBodyObj = [PSCustomObject]@{
    things = @(@{
                field="date_created"
                operator="within"
                value="7"
            })
    }
当我通过
converttojson
传递它时,它看起来是这样的:

$RetrievalParamsBodyObj | ConvertTo-JSON
{
    "things": [
        {
             "field":  "date_created",
             "operator":  "within",
             "value":  "7"
         }
     ]
}

{
    "things": [
        [{
            "field": "date_created",
            "operator": "within last",
            "value": "7"
        }]
    ]
}
但我希望它看起来像这样:

$RetrievalParamsBodyObj | ConvertTo-JSON
{
    "things": [
        {
             "field":  "date_created",
             "operator":  "within",
             "value":  "7"
         }
     ]
}

{
    "things": [
        [{
            "field": "date_created",
            "operator": "within last",
            "value": "7"
        }]
    ]
}
我尝试在哈希表周围包装一个附加数组,但似乎没有任何效果。

两个技巧:1)在内部数组前面加逗号,以便Powershell知道它是嵌套数组而不是串联数组;2)确保设置深度:

[PSCustomObject]@{
    things = @(,@(@{
                field="date_created"
                operator="within"
                value="7"
            }))
    } | ConvertTo-Json -Depth 5
输出:

{
    "things":  [
                   [
                       {
                           "field":  "date_created",
                           "operator":  "within",
                           "value":  "7"
                       }
                   ]
               ]
}

。。。在语法上与所需输出相同。要以不同的格式格式化,您需要创建一个自定义JSON序列化程序

+1,但是请注意,您根本不需要外部的
@(…)
,您可以用另一个一元
替换内部的
@(…)
。最终,混淆源于将
@(…)
误认为是数组构造操作符,而它只是数组的“保证人”。