我有一个结构如下的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数据中每个对象的选定属性。
简而言之,您需要执行以下操作:
(Get-Content file.json -Raw | ConvertFrom-Json) | Select id,itemName,sellerId | Convertto-CSV -NoTypeInformation
第一个问题是要Get-Content传递ConvertFrom-Json不需要的行 。使用该-Raw开关可完整传递它。
Get-Content
ConvertFrom-Json
-Raw
该(Get-Content file.json -Raw | ConvertFrom- Json)需求是在括号中的,使我们能够继续与管。否则,将无法访问这些属性。看起来它正在尝试将整个对象而不是其单个部分向下传递到管道中。
(Get-Content file.json -Raw | ConvertFrom- Json)
-NoTypeInformation 删除这样的行
-NoTypeInformation
#TYPE Selected.System.Management.Automation.PSCustomObject