我有一个包含数百个json文件的文件夹&需要阅读它们&创建一个包含各种字段的输出文件&其中的价值观。
{
"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文件到下一个。有些人可能在条目中有字段,我不知道其名称。每个"条目中都会有一些共同的字段。部分,但它们可能会有所不同,并且可能与显示的顺序不同。
我想将输出写入一个text / csv文件,该文件将被分隔,然后可以导入到Excel中。列出了所有字段的一个列标题。作为新的"条目"找到字段,将它们粘贴到每行的末尾。也加入标题。
答案 0 :(得分:1)
你的意思是做这样的事情?
$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