ich bin offenbar nicht der JSON Typ - jedenfalls kämpfe ich gerade mit einer sehr einfachen JSON-Struktur, die ich nicht extrahiert bekomme.
Und zwar möchte ich einen JSON String der immer gleiche Kopfelemente, aber unterschiedliche "Detaileinträgen" hat, in eine immer gleich aufgebaute Struktur extrahieren.
Der String hat dabei folgenden Aufbau (hier direkt als reales Beispiel):
Code: Alles auswählen
{"status":"OK",
"message":"Der Benutzer wurde angemeldet.",
"count":1,
"datablock":
[
{"users_id":"2",
"accesslevel":"1",
"firstname":"test2",
"lastname":"test2",
"alias":"TE2",
"email":"test2@test.de",
"active":"1"
}
]
}
Code: Alles auswählen
"datablock":
[
{"product_id":"1008",
"name":"Erbsensuppe",
"price":"0,89",
"stockamount":"29"
},
{"product_id":"1009",
"name":"Brathering",
"price":"2,19",
"stockamount":"31"
}
]
Leider funktioniert das nicht so wie ich mir das vorstelle. Muss ich hier mit Pointern arbeiten oder wie realisiert man das?
Code: Alles auswählen
EnableExplicit
Structure structDataBlock
Map datablockmember.s()
EndStructure
Structure structResponse
status.s
message.s
count.i
List datablock.structDataBlock()
EndStructure
Global stResponse.structResponse
Global sResult.s
;sResult = ~"{\"status\":\"OK\",\"message\":\"Der Benutzer wurde erfolgreich abgemeldet.\",\"count\":0,\"datablock\":[]}"
sResult = ~"{\"status\":\"OK\",\"message\":\"Der Benutzer wurde angemeldet.\",\"count\":1,\"datablock\":[{\"users_id\":\"2\",\"accesslevel\":\"1\",\"firstname\":\"test2\",\"lastname\":\"test2\",\"alias\":\"TE2\",\"email\":\"test2@test.de\",\"active\":\"1\"}]}"
;sResult = ~"{\"status\":\"OK\",\"message\":\"Produktinformationen\",\"count\":1,\"datablock\":[{\"product_id\":\"1008\",\"name\":\"Erbsensuppe\",\"price\":\"0,89\",\"stockamount\":\"29\"}]}"
;sResult = ~"{\"status\":\"OK\",\"message\":\"Produktinformationen\",\"count\":2,\"datablock\":[{\"product_id\":\"1008\",\"name\":\"Erbsensuppe\",\"price\":\"0,89\",\"stockamount\":\"29\"},{\"product_id\":\"1009\",\"name\":\"Brathering\",\"price\":\"2,19\",\"stockamount\":\"31\"}]}"
Debug sResult
If ParseJSON(0, sResult)
ExtractJSONStructure(JSONValue(0), @stResponse, structResponse)
FreeJSON(0)
Debug stResponse\status + ": " + stResponse\message + ", Count: " + stResponse\count
ForEach stResponse\datablock()
ForEach stResponse\datablock()\datablockmember()
Debug stResponse\datablock()\datablockmember()
Next
Next
Else
Debug "JSON Fehler"
EndIf