Seite 1 von 1

Parsen von verschachtelten Strukturen

Verfasst: 30.07.2025 02:16
von stab
Hallo,

wie bekomme ich eigentlich die verschachtelte Struktur in meine Liste? (wenn ihr wisst, was ich meine :) )

Code: Alles auswählen

;    HTTP_Get liefert mir als Bsp. das:     [{"fam_name":"Müller","ort":"Köln","kinder":[{"name":"Daniel","alter":5},{"name":"Pia","alter":8}],{"fam_name":"Schulz","ort":"Bonn","kinder":{"name":"Lena","alter":2}],{"fam_name":"Schneider","ort":"Düsseldorf","kinder":[{"name":"Josef","alter":7},{"name":"Maria","alter":8},{"name":"Eva","alter":12}]]

HTTP_Get$ = ~"[{\"fam_name\":\"Müller\",\"ort\":\"Köln\", \"kinder\": [{\"name\":\"Daniel\",\"alter\":5},{\"name\":\"Pia\",\"alter\":8}]},"    +
            ~" {\"fam_name\":\"Schulz\",\"ort\":\"Bonn\" ,\"kinder\": [{\"name\":\"Lena\",\"alter\":2}]},"                                     +
            ~" {\"fam_name\":\"Schneider\",\"ort\":\"Düsseldorf\",\"kinder\": [{\"name\":\"Josef\",\"alter\":7},{\"name\":\"Maria\",\"alter\":8},{\"name\":\"Eva\",\"alter\":12}]}"    +
             "]"

         
Debug HTTP_Get$

Structure kind
  name.s
  alter.i
EndStructure

Structure familie
  fam_name.s
  ort.s
  kinder.kind
EndStructure


NewList kindergeburtstag.familie()

If ParseJSON(0, HTTP_Get$)
  Debug "Parse OK"
	Debug ComposeJSON(0, #PB_JSON_PrettyPrint)
  ExtractJSONList(JSONValue(0), kindergeburtstag())
EndIf
Debug ""


ForEach kindergeburtstag()
  Debug kindergeburtstag()\fam_name
  Debug kindergeburtstag()\ort
  Debug kindergeburtstag()\kinder         ;adresse
  Debug kindergeburtstag()\kinder\name
  Debug kindergeburtstag()\kinder\alter
Next
Muss ich eine 2. Liste erstellen und mit Speicheradressen arbeiten?

Re: Parsen von verschachtelten Strukturen

Verfasst: 30.07.2025 08:27
von Kiffi
Du benötigst Du eine List kinder:

Code: Alles auswählen

Structure familie
  fam_name.s
  ort.s
  List kinder.kind() ; <- hier
EndStructure
und dann kannst Du es so auslesen:

Code: Alles auswählen

ForEach kindergeburtstag()
  Debug kindergeburtstag()\fam_name
  Debug kindergeburtstag()\ort
  ForEach kindergeburtstag()\kinder()
    Debug kindergeburtstag()\kinder()\name
    Debug kindergeburtstag()\kinder()\alter
  Next
Next

Re: Parsen von verschachtelten Strukturen

Verfasst: 30.07.2025 14:27
von stab
Hallo Kiffi, perfekt, super. 1000 Dank.

Code: Alles auswählen

;    HTTP_Get liefert mir als Bsp. das:     [{"fam_name":"Müller","ort":"Köln","kinder":[{"name":"Daniel","alter":5},{"name":"Pia","alter":8}],{"fam_name":"Schulz","ort":"Bonn","kinder":{"name":"Lena","alter":2}],{"fam_name":"Schneider","ort":"Düsseldorf","kinder":[{"name":"Josef","alter":7},{"name":"Maria","alter":8},{"name":"Eva","alter":12}]]

HTTP_Get$ = ~"[{\"fam_name\":\"Müller\",\"ort\":\"Köln\", \"kinder\": [{\"name\":\"Daniel\",\"alter\":5},{\"name\":\"Pia\",\"alter\":8}]},"    +
            ~" {\"fam_name\":\"Schulz\",\"ort\":\"Bonn\" ,\"kinder\": [{\"name\":\"Lena\",\"alter\":2}]},"                                     +
            ~" {\"fam_name\":\"Schneider\",\"ort\":\"Düsseldorf\",\"kinder\": [{\"name\":\"Josef\",\"alter\":7},{\"name\":\"Maria\",\"alter\":8},{\"name\":\"Eva\",\"alter\":12}]}"    +
             "]"

         
Debug HTTP_Get$

Structure kind
  name.s
  alter.i
EndStructure

Structure familie
  fam_name.s
  ort.s
  List kinder.kind()
EndStructure


NewList kindergeburtstag.familie()

If ParseJSON(0, HTTP_Get$)
  Debug "Parse OK"
	Debug ComposeJSON(0, #PB_JSON_PrettyPrint)
	ExtractJSONList(JSONValue(0), kindergeburtstag())
	ExtractJSONStructure(JSONValue(0), @p.kind, kind)
EndIf

Debug ""

ForEach kindergeburtstag()
  Debug kindergeburtstag()\fam_name +" aus " + kindergeburtstag()\ort
  If ListSize(kindergeburtstag()\kinder())
    Debug "Kinder: "
    ForEach kindergeburtstag()\kinder()
      Debug kindergeburtstag()\kinder()\name + ", Alter: " + kindergeburtstag()\kinder()\alter + " Jahre"
    Next
  EndIf 
  
  Debug "-------------------"  
Next