Powershell – json文本或csv

我有一个数以百计的json文件的文件夹,需要阅读它们,并创build一个输出文件,其中的各个字段和值。

{ "id": "02002010", "booktitle": "", "pagetitle": "Demo Page", "parent": "02002000", "img": [ { "imgfile": "02A.png", "imgname": "02A.png" } ], "fmt": "", "entries": [ { "itemid": "1", "partnumber": "1234567", "partdescription": "Washer", "partqty": "2", "Manufacturer": "ACME", "partdescriptionlocal": "Washer" }, { "itemid": "2", "partnumber": "98765-B", "partdescription": "Screw", "partqty": "8", "Vendor": "Widget Inc", "TYPE": "Galv", "partdescriptionlocal": "Screw" }] } 

json文件通常具有相同的结构,除了“条目”可能包含其中的各个字段,可能从一个条目到下一个条目或一个json文件到下一个不一样。 有些可能在字段内有我不知道名称的字段。 每个“条目”部分都会有一些共同的字段,但是它们可能会有所不同,并且可能与所显示的顺序不同。

我想写输出到一个文本/ CSV文件,将被分隔,然后可以导入到Excel中。 列出所有字段的列标题。 当find新的“条目”字段时,将它们粘贴到每行的末尾并添加到标题中。

你的意思是做这样的事情?

 $json = gc C:\temp\file.json | ConvertFrom-Json $props = $json.entries | % {$_ | gm -MemberType NoteProperty} | select -exp name -Unique $results = @() foreach ($entry in $json.entries) { $obj = $json | select * foreach ($prop in $props) { $obj | Add-Member -MemberType NoteProperty -Name $prop -Value $($entry | select -exp $prop -ea 0) } $results += $obj } $results | epcsv C:\temp\file.csv -NoTypeInformation -Encoding ASCII $results