Отображение данных на определенную глубину при использовании Convertfrom-json - PullRequest
1 голос
/ 11 июля 2019

В настоящее время я пытаюсь создать скрипт для преобразования моих json-файлов в csv-файлы.В настоящее время я получаю большую часть данных, но проблема, с которой я сталкиваюсь, заключается в расширении поля «глифы» для добавления этих данных также в csv.Ниже приведен пример JSON в настоящее время.Это похоже на то, что уже есть, но моя проблема с -depth, который извлекает 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-файл. Также это единственные поля, с которыми у меня возникли проблемы.

1 Ответ

2 голосов
/ 11 июля 2019

Если вы хотите поместить вложенные объекты в отдельные поля 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...