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:
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;
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
my_jsonObj.TryGetValue<Integer>( lJsonPath, lInteger_tmp )
false.
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.