Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
使用Powershell从JSON文件中将字段提取为CSV_Json_Powershell_Csv_Format - Fatal编程技术网

使用Powershell从JSON文件中将字段提取为CSV

使用Powershell从JSON文件中将字段提取为CSV,json,powershell,csv,format,Json,Powershell,Csv,Format,我从API中提取了一个json,如下所示: { "LPEONASVVAP0": { "LPEONASVVAP0": { "id": "urn:vcloud:vm:f526d27d-e0f9-4d4f-ae81-4824e397c027", "name": "LPEONASVVAP0",

我从API中提取了一个json,如下所示:

{
    "LPEONASVVAP0": {
        "LPEONASVVAP0": {
            "id": "urn:vcloud:vm:f526d27d-e0f9-4d4f-ae81-4824e397c027",
            "name": "LPEONASVVAP0",
            "description": "_vm_desc_",
            "dateCreated": "2021-04-06T14:56:09.640+0000"
        }
    },
    "WDEONDSVDIS6": {
        "WDEONDSVDIS6": {
            "id": "urn:vcloud:vm:7ed43492-a7ce-4963-b5bb-5ec2ca89477c",
            "name": "WDEONDSVDIS6",
            "description": "",
            "dateCreated": "2021-04-13T13:44:29.973+0000"
        }
    },
    "WDEONASVSTR0": {
        "WDEONASVSTR0": {
            "id": "urn:vcloud:vm:7afa34fe-b239-4abe-90df-3f270b44db1f",
            "name": "WDEONASVSTR0",
            "description": "",
            "dateCreated": "2021-03-10T16:17:50.947+0000"
        }
    },
}
我只需要提取id、name和description字段,就可以创建一个csv。我对此进行了测试,但输出文件为空:

$pathToJsonFile = x
$pathToOutputFile = x

$obj = Get-Content $pathToJsonFile -Raw | ConvertFrom-Json
print $obj
$obj | select id, name, description | Convertto-csv > $pathToOutputFile
您需要通过
psobject
隐藏成员集“发现”父属性名称(例如
'LPEONASVVAP0'
)。由于外部属性和内部属性的名称相同,我们可以重新使用名称来获取内部属性值:

$obj.psobject.Properties |ForEach-Object {
  $_.Value.$($_.Name)
} |Select id,name,description |Export-Csv -NoTypeInformation -Path $pathToOutputFile
您需要通过
psobject
隐藏成员集“发现”父属性名称(例如
'LPEONASVVAP0'
)。由于外部属性和内部属性的名称相同,我们可以重新使用名称来获取内部属性值:

$obj.psobject.Properties |ForEach-Object {
  $_.Value.$($_.Name)
} |Select id,name,description |Export-Csv -NoTypeInformation -Path $pathToOutputFile
编辑:Mathias R.Jessens的答案写得比这更好,我会这样做,而不是我发布的方式

好吧,我复制了你发布的json,导入了它。因为每个信息数组都是这样存储的

"WDEONDSVDIS6": {

   "WDEONDSVDIS6": {
我使用
get member
迭代每个数组,然后从中选择信息。 另外,您不需要使用
converttocsv>$pathToOutputFile
,而是使用
导出csv
命令。 下面是我的代码,我会怎么做,可能有更好的方法,但这是有效的:)

编辑:Mathias R.Jessens的答案写得比这更好,我会这样做,而不是我发布的方式

好吧,我复制了你发布的json,导入了它。因为每个信息数组都是这样存储的

"WDEONDSVDIS6": {

   "WDEONDSVDIS6": {
我使用
get member
迭代每个数组,然后从中选择信息。 另外,您不需要使用
converttocsv>$pathToOutputFile
,而是使用
导出csv
命令。 下面是我的代码,我会怎么做,可能有更好的方法,但这是有效的:)