使用Convertfrom-json时将数据显示到一定深度
Displaying Data to a certain Depth When Using Convertfrom-json
目前我正在尝试创建一个脚本来将我的 json 文件转换为 csv 文件。目前我收到了大部分数据,但我遇到的问题是扩展 "glyphs" 字段以将该数据也添加到 csv 中。
下面是当前 json 的示例。这与现有的类似,但我的问题是 convertfrom-json 提取的深度。它只会升到两级,我需要升到四级。
{
"nodes": [
{
"id": 23,
"type": "Group",
"label": "DOMAIN ADMINS@.COM",
"glyphs": {
"0": {
"position": "top-right",
"font": "\"Font Awesome 5 Free\"",
"content": "",
"fillColor": "black",
"fontScale": 1.5,
"fontStyle": "900"
}
},
"folded": {
"nodes": {},
"edges": {}
},
$user1 = $env:USERNAME
Get-Content C:\Users$user1\Documents\json_to_convert.json |
convertfrom-json | select -ExpandProperty nodes |
Export-CSV C:\Users$user1\Documents\jsonTest_$((Get-Date).ToString('MM-dd-yy')).csv -NoTypeInformation
所以我只是希望也输入 "position"、"font"、"content"、"fillColor"、"fontScale" 和 "fontstyle" 从“字形到我的 CSV 文件。这些是我遇到问题的唯一字段。
如果您想将嵌套对象放入单独的 CSV 字段中,那么您必须考虑如何在 csv 文件中表示它。以下可用于创建使用表达式计算的自定义属性。
Get-Content C:\Users$user1\Documents\json_to_convert.json | ConvertFrom-Json | Select -ExpandProperty nodes | `
Select -Property id,type,label, `
@{Name='Glyphs-position';Expression={$_.glyphs.0 | Select -ExpandProperty position}},`
@{Name='Glyphs-font';Expression={$_.glyphs.0 | Select -ExpandProperty font}},`
@{Name='Glyphs-content';Expression={$_.glyphs.0 | Select -ExpandProperty content}},`
@{Name='Glyphs-fillColor';Expression={$_.glyphs.0 | Select -ExpandProperty fillColor}},`
@{Name='Glyphs-fontScale';Expression={$_.glyphs.0 | Select -ExpandProperty fontScale}},`
@{Name='Glyphs-fontStyle';Expression={$_.glyphs.0 | Select -ExpandProperty fontStyle}}`
| ConvertTo-Csv
这可能会写得更有效,但它演示了如何获取您想要的值。生成的结果 PowerShell 对象是
id : 23
type : Group
label : DOMAIN ADMINS@.COM
Glyphs-position : top-right
Glyphs-font : "Font Awesome 5 Free"
Glyphs-content :
Glyphs-fillColor : black
Glyphs-fontScale : 1.5
Glyphs-fontStyle : 900
一旦转换为 csv
"id","type","label","Glyphs-position","Glyphs-font","Glyphs-content","Glyphs-fillColor","Glyphs-fontScale","Glyphs-fontStyle","folded"
"23","Group","DOMAIN ADMINS@.COM","top-right","""Font Awesome 5 Free""","","black","1.5","900"
目前我正在尝试创建一个脚本来将我的 json 文件转换为 csv 文件。目前我收到了大部分数据,但我遇到的问题是扩展 "glyphs" 字段以将该数据也添加到 csv 中。 下面是当前 json 的示例。这与现有的类似,但我的问题是 convertfrom-json 提取的深度。它只会升到两级,我需要升到四级。
{
"nodes": [
{
"id": 23,
"type": "Group",
"label": "DOMAIN ADMINS@.COM",
"glyphs": {
"0": {
"position": "top-right",
"font": "\"Font Awesome 5 Free\"",
"content": "",
"fillColor": "black",
"fontScale": 1.5,
"fontStyle": "900"
}
},
"folded": {
"nodes": {},
"edges": {}
},
$user1 = $env:USERNAME
Get-Content C:\Users$user1\Documents\json_to_convert.json |
convertfrom-json | select -ExpandProperty nodes |
Export-CSV C:\Users$user1\Documents\jsonTest_$((Get-Date).ToString('MM-dd-yy')).csv -NoTypeInformation
所以我只是希望也输入 "position"、"font"、"content"、"fillColor"、"fontScale" 和 "fontstyle" 从“字形到我的 CSV 文件。这些是我遇到问题的唯一字段。
如果您想将嵌套对象放入单独的 CSV 字段中,那么您必须考虑如何在 csv 文件中表示它。以下可用于创建使用表达式计算的自定义属性。
Get-Content C:\Users$user1\Documents\json_to_convert.json | ConvertFrom-Json | Select -ExpandProperty nodes | `
Select -Property id,type,label, `
@{Name='Glyphs-position';Expression={$_.glyphs.0 | Select -ExpandProperty position}},`
@{Name='Glyphs-font';Expression={$_.glyphs.0 | Select -ExpandProperty font}},`
@{Name='Glyphs-content';Expression={$_.glyphs.0 | Select -ExpandProperty content}},`
@{Name='Glyphs-fillColor';Expression={$_.glyphs.0 | Select -ExpandProperty fillColor}},`
@{Name='Glyphs-fontScale';Expression={$_.glyphs.0 | Select -ExpandProperty fontScale}},`
@{Name='Glyphs-fontStyle';Expression={$_.glyphs.0 | Select -ExpandProperty fontStyle}}`
| ConvertTo-Csv
这可能会写得更有效,但它演示了如何获取您想要的值。生成的结果 PowerShell 对象是
id : 23
type : Group
label : DOMAIN ADMINS@.COM
Glyphs-position : top-right
Glyphs-font : "Font Awesome 5 Free"
Glyphs-content :
Glyphs-fillColor : black
Glyphs-fontScale : 1.5
Glyphs-fontStyle : 900
一旦转换为 csv
"id","type","label","Glyphs-position","Glyphs-font","Glyphs-content","Glyphs-fillColor","Glyphs-fontScale","Glyphs-fontStyle","folded"
"23","Group","DOMAIN ADMINS@.COM","top-right","""Font Awesome 5 Free""","","black","1.5","900"