栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将嵌套的JSON数组转换为CSV文件中的单独列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将嵌套的JSON数组转换为CSV文件中的单独列

CSV转换/导出cmdlet无法“展平”对象,并且可能丢失了一些东西,但是我不知道如何使用内置cmdlet或功能来做到这一点。如果可以保证

disciplines
并且
areas
始终具有相同数量的元素,则可以通过
Select-Object
与派生属性一起使用来对其进行琐碎处理:

$properties=@('id','title','slug','url','email','link','subject','level',    @{Name='discipline_1';expression={$_.disciplines[0]}}    @{Name='discipline_2';expression={$_.disciplines[1]}}    @{Name='discipline_3';expression={$_.disciplines[2]}}    @{Name='area_1';expression={$_.areas[0]}}    @{Name='area_2';expression={$_.areas[1]}})(Get-Content 'PATH_TOtest.json' -Raw | ConvertFrom-Json)| Select-Object -Property $properties | Export-CSV -NoTypeInformation -Path 'PATH_TOtest.csv'

但是,我假设,

disciplines
并且
areas
每条记录的长度都是可变的。在这种情况下,您将必须遍历输入并获取学科和领域的最高计数值,然后动态构建属性数组:

$inputData = Get-Content 'PATH_TOtest.json' -Raw | ConvertFrom-Json$counts = $inputData | Select-Object -Property     @{Name='disciplineCount';expression={$_.disciplines.Count}},@{Name='areaCount';expression={$_.areas.count}}$maxDisciplines = $counts | Measure-Object -Maximum -Property disciplineCount | Select-Object -ExpandProperty     Maximum$maxAreas = $counts | Measure-Object -Maximum -Property areaCount | Select-Object -ExpandProperty Maximum$properties=@('id','title','slug','url','email','link','subject','level')1..$maxDisciplines | % {  $properties += @{Name="discipline_$_";expression=[scriptblock]::create("`$_.disciplines[$($_ - 1)]")}}1..$maxAreas | % {  $properties += @{Name="area_$_";expression=[scriptblock]::create("`$_.areas[$($_ - 1)]")}}$inputData | Select-Object -Property $properties | Export-CSV -NoTypeInformation -Path 'PATH_TOtest.csv'

该代码尚未经过全面测试,因此可能需要进行一些调整才能100%工作,但我认为这些想法很可靠=)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号