h41msh1c0r
Goto Top

Powershell Daten strukturieren als json

Aloa in die Runde,

vielleicht denke ich auch wieder zu sehr um die Ecke, folgendes:

Ich habe einen Berg an Subscriptions die ich aus einem unserem System ausgelesen habe und jetzt wolle ich zum Auswerten das alles etwas strukturieren und so dynamisch halten ohne das Script anpacken zu müssen.
Also für jeden Subscriptiontyp einen Block generieren und den beim auszählen einfach mit Werten füllen.

$zaehldaten= [ordered]@{
          "Subscription1" = @(  
              @{
                      "CountSum" =  1000  
                      "Status" = @(  
                          @{
                              "Active" = 900  
                              "Cancelled" = 100  
                          }
                      )
                      "Ordered" = @(  
                          @{
                              "2020" = @(  
                                  @{
                                      "Count" = 570  
                                  }
                              )
                              "2021" = @(  
                                  @{
                                      "Count" = 270  
                                  }
                              )
                          }
                      )
                      "Cancelled" = @(  
                          @{
                              "2020" = @(  
                                  @{
                                      "Count" = 300  
                                  }
                              )
                              "2021" = @(  
                                  @{
                                      "Count" = 100  
                                  }
                              )
                          }
                      )
                }
            )
} 

Jetzt scheitere ich daran die "Count" Variablen in der Verschachtelung zu füllen.
CountSum bekomme ich beschrieben. Oder doch das Pferd andersherum aufzäumen?

Jetzt probierte ich die Datenabbildung oben aus PSObjects aufzubauen:

$allData = @()

$allData += New-Object PSObject -Property @{Subscription1 = @()}

$($allData).Subscription1 += New-Object PSObject -Property @{Count="1000"; Status=@(); Ordered=@(); Cancelled=@()}  

$($($allData).Subscription1).Status += New-Object PSObject -Property @{Active="900"; Cancelled="100"}  

$($($allData).Subscription1).Ordered += New-Object PSObject -Property @{2020=@(); 2021=@()}

$($($($allData).Subscription1).Ordered).2020 += New-Object PSObject -Property @{Count=2020}
$($($($allData).Subscription1).Ordered).2021 += New-Object PSObject -Property @{Count=2021}

$($($allData).Subscription1).Cancelled += New-Object PSObject -Property @{2020=@(); 2021=@()}

$($($($allData).Subscription1).Cancelled).2020 += New-Object PSObject -Property @{Count=2020}
$($($($allData).Subscription1).Cancelled).2021 += New-Object PSObject -Property @{Count=2021}

$($($($($allData).Subscription1).Cancelled).2020).Count = 10

$allData | ConvertTo-Json

Wenn ich jetzt allerdings aus dem Ganzen versuche ein JSON zu machen kommt nur folgendes bei rum:

{
    "Subscription1":  [  
                          {
                              "Ordered":  "",  
                              "Status":  "",  
                              "Cancelled":  "",  
                              "Count":  "1000"  
                          }
                      ]
}

Wie bekomme ich das JSON so hin wie in der Überlegung am Anfang?

Grüße zum Freitag

Content-ID: 667935

Url: https://administrator.de/contentid/667935

Ausgedruckt am: 26.09.2024 um 23:09 Uhr

H41mSh1C0R
Lösung H41mSh1C0R 06.09.2024 aktualisiert um 12:48:41 Uhr
Goto Top
Manchmal kann es so einfach sein:

-Depth 6

Am ConvertTo-JSON hinzufügen und fertig. ;)

{
    "Subscription1":  [  
                          {
                              "Ordered":  [  
                                              {
                                                  "2021":  [  
                                                               {
                                                                   "Count":  2021  
                                                               }
                                                           ],
                                                  "2020":  [  
                                                               {
                                                                   "Count":  2020  
                                                               }
                                                           ]
                                              }
                                          ],
                              "Status":  [  
                                             {
                                                 "Active":  "900",  
                                                 "Cancelled":  "100"  
                                             }
                                         ],
                              "Cancelled":  [  
                                                {
                                                    "2021":  [  
                                                                 {
                                                                     "Count":  2021  
                                                                 }
                                                             ],
                                                    "2020":   {  
                                                                     "Count":  10  
                                                                 }
                                                }
                                            ],
                              "Count":  "1000"  
                          }
                      ]
}