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
解析JSON数据第2部分_Json_Powershell_Formatting - Fatal编程技术网

解析JSON数据第2部分

解析JSON数据第2部分,json,powershell,formatting,Json,Powershell,Formatting,我问了之前的一个问题,得到了mklement0的精彩回复,所以谢谢你们 JSON是:- { "results": [ { "id": 1, "first_name": "Jeanette", "last_name": "Penddreth", "email": "jpenddreth0@c

我问了之前的一个问题,得到了mklement0的精彩回复,所以谢谢你们

JSON是:-

{
  "results": [
    {
      "id": 1,
      "first_name": "Jeanette",
      "last_name": "Penddreth",
      "email": "jpenddreth0@census.gov",
      "gender": "Female",
      "ip_address": "26.58.193.2",
      "serverlist": [
        {
          "myval1": "testdata1",
          "myval2": "testdata2",
          "myval3": "testdata3"
        }
      ],
      "aitlist": [
        {
          "ait1": "aitdata1",
          "ait2": "aitdata2"
        }
      ]
    },
    {
      "id": 2,
      "first_name": "Giavani",
      "last_name": "Frediani",
      "email": "gfrediani1@senate.gov",
      "gender": "Male",
      "ip_address": "229.179.4.212",
      "serverlist": [
        {
          "myval1": "testdata5",
          "myval2": "testdata6",
          "myval3": "testdata7"
        },
        {
          "myval1": "testdata9",
          "myval2": "testdata10",
          "myval3": "testdata11"
        }
      ],
      "aitlist": [
        {
          "ait1": "aitdata3",
          "ait2": "aitdata4"
        }
      ]
    },
    {
      "id": 3,
      "first_name": "Noell",
      "last_name": "Bea",
      "email": "nbea2@imageshack.us",
      "gender": "Female",
      "ip_address": "180.66.162.255"
    },
    {
      "id": 4,
      "first_name": "Willard",
      "last_name": "Valek",
      "email": "wvalek3@vk.com",
      "gender": "Male",
      "ip_address": "67.76.188.26"
    }
   ]
}
jigsw中的最后一个部分是,我需要输出JSON文件中方括号中的所有项目,将每个“记录”一起输出,这与使用以下代码输出数据完全相同:

(Get-Content -Raw C:\Temp\JsonFile.json | ConvertFrom-Json).Results | Out-GridView
最终输出将如下所示:

1,"Jeanette","Penddreth","jpenddreth0@census.gov","Female","26.58.193.2","{@{myval1=testdata1; myval2=testdata2; myval3=testdata3}}","{@{ait1=aitdata1; ait2=aitdata2}}"
这就是输出在
Out GridView
中的显示方式,基于:

通过您的示例输入,这将产生:

1,“珍妮特”,“彭德雷斯”jpenddreth0@census.gov“,”女性“,”26.58.193.2“,“{myval1=testdata1;myval2=testdata2;myval3=testdata3}”,“{ait1=aitdata1;ait2=aitdata2}”
2,“吉瓦尼”,“弗雷迪亚尼”gfrediani1@senate.gov“,”男性“,”229.179.4.212“,“{myval1=testdata5;myval2=testdata6;myval3=testdata7},{myval1=testdata9;myval2=testdata10;myval3=testdata11},“{ait1=aitdata3;ait2=aitdata4}”
3、“Noell”、“Bea”nbea2@imageshack.us“,”女性“,”180.66.162.255”
4,“威拉德”,“瓦莱克”wvalek3@vk.com“,”男“,”67.76.188.26”
请注意,与
Out GridView
表示法相比,省略了一个额外的
{…}
附件,因为它没有实际用途

但是,从根本上说,该表示法基于类似哈希表的表示法,
[pscustomobject]
实例通过其
.ToString()
方法将其字符串化,如中所述


但是,由于中所述的错误,必须在内部
.psobject
成员上调用
.ToString()
方法,而不是在
[pscustomobect]
实例本身上调用。

原始问题的链接感谢您在这方面的帮助。“我承认我有点受困了……我很高兴听到我的回答很有帮助,@davtt;我的荣幸。
(Get-Content -Raw C:\Temp\JsonFile.json | ConvertFrom-Json).Results | ForEach-Object {
  # Helper script block that walks an object graph and outputs all 
  # *scalar* leaf property values as-is, while using a single string to
  # represent *array-valued* properties.
  $sb = {
    foreach ($el in @($args[0])) {
      if ($el -is [System.Management.Automation.PSCustomObject]) { # a complex object -> recurse
        foreach ($prop in $el.psobject.Properties) { 
          if ($prop.Value -is [array]) { # array-valued property
            # Use the same representation that Out-GridView displays.
            '"{0}"' -f ($prop.Value.ForEach({ $_.psobject.ToString() }) -join ',')
          }
          else { # scalar property -> recurse
            & $sb $prop.Value 
          }
        } 
      }
      else {
         # a leaf value -> output it, enclosed in embedded "..." if it is a string
        if ($el -is [string]) { "`"$el`"" } else { $el }
      }
    }
  }

  # Call the script block with the input object at hand to collect all values,
  # join them with ",", and output the result.
  (& $sb $_) -join ','

}