Powershell convertfrom-json | 的ConvertTo-CSV

Łuk*_*asz 6 csv powershell json

我有一个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
  }
]
}]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为csv,以便选定的属性名称成为csv标头,它们的值(仅限深度1)将成为数据.例如

id,itemName,sellerId
12345,"some string",123
12346,"some other string",234
Run Code Online (Sandbox Code Playgroud)

我尝试过使用数百种变体

cat file.json | convertfrom-json | convertto-csv
Run Code Online (Sandbox Code Playgroud)

但没有一个有用.我得到的只是具有对象名称/类型的csv数据,我无法弄清楚如何使它只使用json数据中每个对象的选定属性.

Mat*_*att 9

总之,你需要做这样的事情:

(Get-Content file.json -Raw | ConvertFrom-Json) | Select id,itemName,sellerId | Convertto-CSV -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

第一个问题是Get-Content通过个别线路 ConvertFrom-Json并不是它想要的.使用-Raw开关完全传递它.

(Get-Content file.json -Raw | ConvertFrom-Json)需求是在括号中的,使我们能够继续与管.如果不这样做,则无法访问这些属性.看起来它试图将整个对象而不是其各个部分传递到管道中.

-NoTypeInformation 删除这样的行

#TYPE Selected.System.Management.Automation.PSCustomObject
Run Code Online (Sandbox Code Playgroud)