一尘不染

Powershell convertfrom-json | 转换为csv

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
  }
]
}]

我想将其转换为csv,以便所选的属性名称成为csv标头,并且其值(仅深度1)成为数据。例如

id,itemName,sellerId
12345,"some string",123
12346,"some other string",234

我试过使用数百种

cat file.json | convertfrom-json | convertto-csv

但没有一个成功。我得到的只是带有对象名称/类型的csv数据,我不知道如何使它仅使用json数据中每个对象的选定属性。


阅读 284

收藏
2020-07-27

共1个答案

一尘不染

简而言之,您需要执行以下操作:

(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
2020-07-27