Ich lese zur Zeit Daten aus einer .json Datei aus und extrahiere sie dann in eine Variable, die einer Struktur zugeordnet ist.
Code: Alles auswählen
Structure JSON_ITEM
Name.s
Row.i
Type.i
CompareWith.s
EndStructure
Structure JSON_SHEET
List Items.JSON_ITEM()
Name.s
FirstClientRow.i
FirstClientColumn.i
EndStructure
Structure JSON_FORM
Revision.s
LastSaved.i
RequiredSheets.s
List Sheets.JSON_SHEET()
EndStructure
Global Form.JSON_FORM
Define.i hJSON
Define.s jsonFile
jsonFile = "R:\_json.json"
hJSON = LoadJSON(#PB_Any, jsonFile)
If hJSON
ExtractJSONStructure(JSONValue(hJSON), @Form.JSON_FORM, JSON_FORM)
Else
Debug "Malformed JSON detected!" + #CRLF$ + #CRLF$ +
"Message: " + JSONErrorMessage() + #CRLF$ +
"Line: " + JSONErrorLine() + #CRLF$ +
"Column: " + JSONErrorPosition()
EndIf
weil ich in einem aeusseren foreach loop jedesmal durch die Liste Items.JSON_ITEM() durchgehen
muss, um den Eintrag "Name" von dort mit einem anderen String zu vergleichen.
Viel schneller ginge es, wenn ich es mit einem FindMapElement() machen koennte, was mir gleichzeitig
auch sofort den Zeiger auf das Element liefern wuerde, dessen Daten ich brauche...
Deshalb die Frage ob es moeglich ist, die folgenden .json Daten so zu veraendern, dass ich statt
List Items.JSON_ITEM()
Map Items.JSON_ITEM()
in der JSON_SHEET Struktur verwenden kann.
Also das "S1_PV_K_GM", "S1_PV_K_GW", etc. zu "MapKeys" werden?
Anmerkung:
UTF-8 Datei erstellen, folgende Daten reinkopieren, als "_json.json" abspeichern und Pfad anpassen:
Code: Alles auswählen
{
"Revision" : "v1",
"LastSaved" : 23432432,
"RequiredSheets" : "GS,MB",
"Sheets" : [
{
"Name" : "GS",
"FirstClientColumn" : 6,
"FirstClientRow" : 7,
"Items" : [
{
"Name" : "S1_PV_K_GM",
"Row" : 7,
"Type" : 1,
"CompareWith" : "männlich"
},
{
"Name" : "S1_PV_K_GW",
"Row" : 7,
"Type" : 1,
"CompareWith" : "weiblich"
},
{
"Name" : "S1_PV_K_FN",
"Row" : 8,
"Type" : 2,
"CompareWith" : ""
}
]
},
{
"Name" : "MB",
"FirstClientColumn" : 6,
"FirstClientRow" : 5,
"Items" : [
{
"Name" : "S4_ERG_IB_Y",
"Row" : 203,
"Type" : 1,
"CompareWith" : "ja"
}
]
}
]
}