Powershell convertfrom-json |的ConvertTo-CSV

时间:2015-05-27 14:09:56

标签: json powershell csv

我有一个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数据中每个对象的选定属性。

1 个答案:

答案 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