1

目前我正在尝试创建一个脚本来将我的 json 文件转换为 csv 文件。目前我正在接收大部分数据,但我遇到的问题是扩展“字形”字段以将该数据也添加到 csv 中。以下是当前 json 的示例。这类似于已经存在的内容,但我的问题是 convertfrom-json 提取的 -depth 。它只会升到两个级别,我需要它升到四级。

{
  "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

所以我只是希望也将“字形”中的“位置”、“字体”、“内容”、“填充颜色”、“字体比例”和“字体样式”输入到我的 CSV 文件中。这些是我唯一的字段有麻烦了。

4

1 回答 1

2

如果要将嵌套对象放置到单独的 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"
于 2019-07-11T14:38:36.367 回答