【发布时间】:2015-08-09 16:32:08
【问题描述】:
我有一个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 数据中每个对象的选定属性。
【问题讨论】:
-
没什么大不了的,但您的输入数据与您的示例输出不匹配。
-
感谢您指出这一点,我已使示例输出与输入数据匹配。
-
我无法一行完成。这对你有用吗?
$converted = Get-Content file.json -raw | ConvertFrom-Json;$converted | Select id,itemName,sellerId | Convertto-CSV -NoTypeInformation。由于某种我还不知道的原因,需要首先将结果保存到变量中。之后工作。 -
我无语了。它起作用了,我什至想出了如何用它来制作oneliner。似乎在 iwr 和 convertfrom-json 周围加上括号可以解决问题。我认为这可能与 Powershell 处理对象的方式有关。无论如何,下面是有效的命令。
(iwr "url" | convertfrom-json) | select id, itemname | convertto-csv -NoTypeInformation -
是的......我知道我的问题是什么......现在回答。
标签: json powershell csv