AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TJSONMarshal / TJSONUnMarshal böse Falle

Ein Thema von Rollo62 · begonnen am 1. Okt 2017 · letzter Beitrag vom 3. Okt 2017
 
Rollo62

Registriert seit: 15. Mär 2007
4.159 Beiträge
 
Delphi 12 Athens
 
#1

TJSONMarshal / TJSONUnMarshal böse Falle

  Alt 1. Okt 2017, 21:40
Ich frage mich seit geraumen warum eine App plötzlich Timestamps falsch berechnet.
Der Grund war das Encoding / Decoding mit TJSONMarshal / TJSONUnMarshal.

Das hat bis dato gut funktioniert, Object zu String, und zurück, aber seit womöglich 10.1 Berlin gab es da plötzlich Probleme.
Normalerweise debugge ich nicht tief in die System Sourcen, aber hier musste es mal wieder sein

Der Grund war das TJSONMarshal / TJSONUnMarshal anscheinend neuerdings unterschiedliche IsDateTimeUTC settings per Default eingestellt haben.
Kann jetzt nicht genau sagen seit wann ...

Die Lösung war das explizit mit anzugeben, um die Konvertierungen kompatibel zu machen, also
LMar.DateTimeIsUTC := True; für Marshal/Unmarshal:

Delphi-Quellcode:
function TParcel.InternalMarshal_ToString : String;
var
  LMar : TJSONMarshal;
begin

  LMar := TJSONMarshal.Create(); // This doesn't correctly set DateTimeUTC by default

  try
      LMar.DateTimeIsUTC := True; // !!! Important to ensure same Coding/Decoding

      Result := LMar.Marshal(Self).ToString; // as TJSonObject;

  finally
      LMar.Free;
  end;

end;



function TParcel.InternalUnmarshal_FromObject(value: TJSONObject): TParcel;

var
  LMar: TJSONUnMarshal;

begin
    Result := nil;

    if not Assigned( value ) then
        Exit;

    LMar := TJSONUnMarshal.Create(); // This sets DateTimeIsUTC internally by default

    try
        LMar.DateTimeIsUTC := True; // !!! Important to ensure same Coding/Decoding

        ...
        ...
        ...


    finally
        LMar.Free;
    end;
end;

Wenn es nicht gleich gesetzt wird kann es zu einer Zeitdifferenz dei Encode/Decode kommen von 2:00h.
Das ist definitiv nicht das was ich erwarten würde

Rollo

Geändert von Rollo62 ( 1. Okt 2017 um 21:55 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 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 by Thomas Breitkreuz