![]() |
[gelöst] Json-Datei auslesen über my_jsonObj.TryGetValue liefert immer false
Hallo,
vllt. ist es schon zu spät... Ich bekomme die Array-Werte aus einer Jsondatei nicht ausgelesen. Die Json-Datei ist konform (mehrfach im Web geprüft). So schaut die Json-Datei (auszugsweise aus):
Code:
{
"FieldAssignmentForTable": [ { "Fieldnumber_0:": "0", "Fieldname_0:": "Name", "ImportThisField2Table_0____0_is_no__1_is_yes": 1, "Fieldnumber_1:": "1", "Fieldname_1:": "vom", "ImportThisField2Table_1____0_is_no__1_is_yes": 1, "Fieldnumber_2:": "2", "Fieldname_2:": "bis", "ImportThisField2Table_2____0_is_no__1_is_yes": 1, } ] }
Delphi-Quellcode:
Ich habe mir den Wert der Variable "lJsonPath" aus "Überrwachte Ausdrücke" rauskopiert und in der Json-Datei mit den Bezeichnern verglichen. Sah für mich alles OK aus. Und trotzdem liefert
PROCEDURE JsonDateiFieldAssignment2TableAuslesen;
VAR my_jsonObj: TJSONObject; i, lInteger_tmp: Integer; lJsonPath: STRING; BEGIN my_jsonObj := NIL; TRY IF FileExists( ExtractFilePath( ParamStr( 0 ) ) + 'FieldAssignmentForTable.json' ) THEN BEGIN my_jsonObj := TJSONObject.ParseJSONValue( TFile.ReadAllText( ExtractFilePath( ParamStr( 0 ) ) + 'FieldAssignmentForTable.json', TEncoding.UTF8 { * } ) ) AS TJSONObject; IF ( NOT Assigned( my_jsonObj ) ) THEN BEGIN TMSLogger.Warning( ' Die Datei "FieldAssignmentForTable.json" konnte nicht verarbeitet werden! Der Inhalt: ' + TFile.ReadAllText( ExtractFilePath( ParamStr( 0 ) ) + 'FieldAssignmentForTable.json' ) ); END ELSE BEGIN // FieldAssignmentForTable" FOR I := 0 TO ReadPDFFieldsInTable.FieldCountFromAllPagesFromMasterPDFDocument - 1 DO BEGIN lInteger_tmp := -1; lJsonPath := 'FieldAssignmentForAidaTable.ImportThisField2Table_' + IntToStr( i ) + '____0_is_no__1_is_yes'; IF my_jsonObj.TryGetValue<Integer>( lJsonPath, lInteger_tmp ) THEN g_JsonSettingsParams.AddItemToArr_MasterPDF_ImportFields2AidaTable( lInteger_tmp ) ELSE TMSLogger.Warning( ' Der Wert "ImportThisField2Table_' + IntToStr( i ) + '____0_is_no__1_is_yes' + '" konnte nicht ausgelesen werden.' ); END; END; // Ende IF ( NOT Assigned( my_jsonObj ) ) END // Ende IF FileExists( gs_PathAndFileNameFromSettingJson ) ELSE BEGIN TMSLogger.Warning( ' Die Datei "FieldAssignmentForTable.json" war nicht vorhanden.' ); END; FINALLY my_jsonObj.Free; END; END;
Delphi-Quellcode:
false.
my_jsonObj.TryGetValue<Integer>( lJsonPath, lInteger_tmp )
Sieht jemand das Problem? Sorry für die langen Bezeichner, ich bekomme das einfach nicht besser hin. Dadurch liest sich der Code schlechter... Vielen Dank vorab. |
AW: Json-Datei auslesen über my_jsonObj.TryGetValue liefert immer false
Muss diese Zeile
Delphi-Quellcode:
IF my_jsonObj.TryGetValue<Integer>( lJsonPath, lInteger_tmp ) THEN
nicht auf das Array-Element[n] angewendet werden? Du greifst (glaube ich) da als Objekt drauf. |
[gelöst] AW: Json-Datei auslesen über my_jsonObj.TryGetValue liefert immer false
Hallo,
ursprünglich war ich auf ein Array in de Json-Datei fixiert. So wie ich das Json-File jetzt nutze macht ein Array da keinen Sinn mehr. Ich habe also in der Json-Datei das Array (eckige Klammern) entfernt und schon läuft alles. Danke und allen einen schönen Sonntag! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz