我有一个JSON数据结构如下(这里可能有一些错误,我使用的数据很好):
[{
"id": 12345,
"itemName": "some string",
"sellerId": 123,
"seller": "",
"categoryId": ,
"categoryPath": [
{
//more data
},
{
//more data
}
]},
{"id": 12346,
"itemName": "some other string",
"sellerId": 234,
"seller": "",
"categoryId": ,
"categoryPath": [
{
//more data
},
{
//more data
}
]
}]
我想将其转换为csv,以便所选属性名称成为csv标头,并且它们的值(仅限深度1)将成为数据。 e.g
id,itemName,sellerId
12345,"some string",123
12346,"some other string",234
我尝试过使用数百种
cat file.json | convertfrom-json | convertto-csv
但没有一个有效。我得到的只是具有对象名称/类型的csv数据,我无法弄清楚如何使它只使用json数据中每个对象的选定属性。
答案 0 :(得分:8)
简而言之,你需要做这样的事情:
(Get-Content file.json -Raw | ConvertFrom-Json) | Select id,itemName,sellerId | Convertto-CSV -NoTypeInformation
第一个问题是Get-Content
将个别行传递给ConvertFrom-Json
,这不是它想要的。使用-Raw
开关将其全部传递。
(Get-Content file.json -Raw | ConvertFrom-Json)
需要在括号中,因为这允许我们继续管道。如果不这样做,则无法访问这些属性。看起来它试图将整个对象而不是其各个部分传递到管道中。
-NoTypeInformation
删除这样的行
#TYPE Selected.System.Management.Automation.PSCustomObject