Ł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数据中每个对象的选定属性.
总之,你需要做这样的事情:
(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)
| 归档时间: |
|
| 查看次数: |
10250 次 |
| 最近记录: |