Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi 12 JSON Deserialisierungsbug (https://www.delphipraxis.net/214615-delphi-12-json-deserialisierungsbug.html)

BastiFantasti 8. Feb 2024 10:30

Delphi-Version: 12 Athens

Delphi 12 JSON Deserialisierungsbug
 
Hallo zusammen,

kann jemand dieses Problem bestätigen oder weiß sogar eine Lösung?
Wenn ich unter Delphi 12 (inkl. Patch 1) versuche ein Objekt aus einem Jsonstring zu deserialiseren (Funktion aus rest.json) kommt eine Schutzverletzung:

Code:
  fo := TJson.JsonToObject<TFormatting>(jdo_arr.O[iter].ToJSON());
unter Delphi 11 funktioniert der gleiche Aufruf problemlos und erzeugt das Objekt wie gewünscht.

himitsu 8. Feb 2024 10:37

AW: Delphi 12 JSON Deserialisierungsbug
 
Mindestens einen aktuellen Bug gibt es
https://www.delphipraxis.net/214595-...ml#post1533064

und noch ein paar
https://quality.embarcadero.com/brow...updated%20DESC


Wie wäre es, wenn du etwas mehr infos geben würstest?
* der Stacktrace von der Exception
* sicher, dass es vom JSON und nicht vom
Delphi-Quellcode:
jdo_arr.O[iter]
kommt?
* und vielleich sagen, ob irgendwas "Exotisches" an deinem TFormatting existiert?

BastiFantasti 8. Feb 2024 11:14

AW: Delphi 12 JSON Deserialisierungsbug
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi und danke für die schnelle Rückmeldung.

Du hast recht, mehr Info macht es leichter :-D

Also ja, das jdo (JsonDataObjects) passt soweit.
Ich habe das Arrayelement mit .tojson() rausgeholt und in eine Datei weggeschrieben.
Die Struktur ist identisch wie bei der Implementierung mit Delphi 11

Der Fehler tritt bei Kompilieren mit Win32 und Win64 auf

Hier noch die Meldung der Exception:

Code:
---------------------------
GExperts Debugger Exception Notification
---------------------------
Project ProfDIA_LA.exe raised exception class EAccessViolation with message 'Access violation at address 00000000010FA609. Read of address 0000000000000000'.
---------------------------
[&Filter ...] [Ignore &All this Session] [&Break] [Additional &Info] [&Continue]
---------------------------
ThreadId=19924
ProcessId=15
ThreadName=""
ExceptionMessage="Access violation at address 00000000010FA609. Read of address 0000000000000000"
ExceptionName="EAccessViolation"
ExceptionDisplayName="$C0000005"
ExceptionAddress=010FA609
FileName=<not available>
LineNumber=<not available>

---------------------------
Wie gesagt, identischer API Aufruf, identisches Json Objekt unter Delphi 11 funktioniert.


Ich hab das Problem auch noch in ein Testprojekt extrahiert.
Siehe Anhang

Uwe Raabe 8. Feb 2024 11:21

AW: Delphi 12 JSON Deserialisierungsbug
 
Problem ist hier das fehlende Feld group zusammen mit dem Bug RSP-43488

Als Workaround genügt es in
Delphi-Quellcode:
TFormatting
ein Feld
Delphi-Quellcode:
FGroup: TObject;
zu ergänzen.

BastiFantasti 8. Feb 2024 11:56

AW: Delphi 12 JSON Deserialisierungsbug
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1533188)
Problem ist hier das fehlende Feld group zusammen mit dem Bug RSP-43488

Als Workaround genügt es in
Delphi-Quellcode:
TFormatting
ein Feld
Delphi-Quellcode:
FGroup: TObject;
zu ergänzen.


Danke für die Antwort. Wird sofort getestet :thumb:

BastiFantasti 8. Feb 2024 11:56

AW: Delphi 12 JSON Deserialisierungsbug
 
Ich habe scheinbar keinen Account / Zugriff auf das Jira von Embarcadero.
Benötigt man da einen separaten Account? Mein normaler Embarcadero Account funktioniert nicht.

peterbelow 8. Feb 2024 12:57

AW: Delphi 12 JSON Deserialisierungsbug
 
Zitat:

Zitat von BastiFantasti (Beitrag 1533192)
Ich habe scheinbar keinen Account / Zugriff auf das Jira von Embarcadero.
Benötigt man da einen separaten Account? Mein normaler Embarcadero Account funktioniert nicht.

QUality portal ist im Umbau, die alte Onlineversion ist schon read-only aber die neue ist noch nicht freigegeben. Da gab's kürzlich einen Blog zu.

Uwe Raabe 8. Feb 2024 13:08

AW: Delphi 12 JSON Deserialisierungsbug
 
Aber Ansehen sollte noch gehen.

himitsu 8. Feb 2024 13:16

AW: Delphi 12 JSON Deserialisierungsbug
 
Loginname benutzt, nicht die Mailadresse, für das Login?

Name steht dort https://my.embarcadero.com/#userProfile drin, falls vergessen.

BastiFantasti 9. Feb 2024 08:37

AW: Delphi 12 JSON Deserialisierungsbug
 
Guten Morgen zusammen,

mit dem Benutzernamen anstelle der E Mail Adresse hat es tatsächlich funktioniert.

Vielen Dank und viele Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz