Powershell和嵌套JSON

我有以下JSON

{
  "method": "exec","params": [
    {
      "url": "/sys/login/user","data": [
        {
          "user": "Myusername","passwd": "MyPassword"
        }
      ]
    }
  ],"id": 1,"ver": "2.0"
}

我正在尝试使用Powershell构建此JSON,但是输出不正确,以下是我的代码。

$fullJson=@{}
$params=@()
$paramsdata=@()
$paramsdata+=@{"user"="mailapi"}
$paramsdata+=@{"passwd"="**********"}
$params+=@{"url"="/sys/login/user"}
$params+=@{"data"=$paramsdata}
$fullJson.Add("method","exec")
$fullJson.Add("params",$params)
$fullJson.Add("id","1")
$fullJson.Add("ver","2.0")
$JsonBody=$fullJson | ConvertTo-Json
$x=Invoke-WebRequest -Uri https://10.10.10.10/jsonrpc -Body $JsonBody -Method Post

输出如下

{
    "method":  "exec","params":  [
                   {
                       "url":  "/sys/login/user"
                   },{
                       "data":  "System.Collections.Hashtable System.Collections.Hashtable"
                   }
               ],"id":  "1","ver":  "2.0"
}

问题在于DATA属性的格式不正确,它应该是第一个内部的嵌套数组,但是似乎它是作为哈希表添加的。

这个问题是数据数组应该像下面这样构建

"params": [
    {
      "url": "/sys/login/user","passwd": "MyPassword"
        }
      ]

但是用我的代码,它是这样构建的

"params":  [
                   {
                       "url":  "/sys/login/user"
                   },

任何有关更新的帮助。

谢谢

lunatic999 回答:Powershell和嵌套JSON

-Depth中使用ConvertTo-Json option

  

指定包含在其中的对象的级别数   JSON表示形式。默认值为2。

您想要的深度为4(对象->参数->数据->用户名/密码):

$JsonBody=$fullJson | ConvertTo-Json -Depth 4
本文链接:https://www.f2er.com/3082607.html

大家都在问