Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/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
Arrays Powershell和嵌套JSON_Arrays_Json_Powershell_Hashtable - Fatal编程技术网

Arrays Powershell和嵌套JSON

Arrays Powershell和嵌套JSON,arrays,json,powershell,hashtable,Arrays,Json,Powershell,Hashtable,我有下面的JSON { "method": "exec", "params": [ { "url": "/sys/login/user", "data": [ { "user": "MyUsername", "passwd": "MyPassword" } ] } ], "id": 1, "ver": "2.0" } 我试图使用Powershell构建

我有下面的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"
}
问题是数据属性的格式不正确,它应该是第一个数组中的嵌套数组,但它似乎是作为哈希表添加的

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

"params": [
    {
      "url": "/sys/login/user",
      "data": [
        {
          "user": "MyUsername",
          "passwd": "MyPassword"
        }
      ]
但我的代码是这样构建的

"params":  [
                   {
                       "url":  "/sys/login/user"
                   },
                   {
                       "data":  "System.Collections.Hashtable System.Collections.Hashtable"
                   }
               ],
更新此文件时有任何帮助


谢谢

使用
转换为Json
中的
-Depth

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

所需深度为4(对象->参数->数据->用户名/密码):

$JsonBody=$fullJson |转换为Json-深度4

应该像这样发送代码“``”params:[{“url”:“/sys/login/user”,“data:[{”user:“MyUsername”,“passwd:“MyPassword”}]``但是使用我的代码,它是像这样构建的“`”params:[{“url”:“/sys/login/user”},{“data”:“System.Collections.Hashtable System.Collections.Hashtable”}],```@FarisMlaeb我误解了你的问题,现在我编辑了我的答案。