AGB  ·  Datenschutz  ·  Impressum  







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

JSON in Delphi

Ein Thema von Incocnito · begonnen am 24. Apr 2020 · letzter Beitrag vom 27. Apr 2020
 
Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#1

JSON in Delphi

  Alt 24. Apr 2020, 14:26
Hi Zusammen,

ich versuche das mal als Beispiel zusammenzufassen, also bitte nicht meckern, wenn nun vieles fehlt oder sinnlos erscheint, weil leer.

1) Ich habe ein JSON:
Code:
{
  "links": {
    "start": "bla",
    "xxx": "yyy",
    "zzz": "nnn"
  },
  "data": {
    "type": "wertA",
    "id": "wertB"
  },
  "included": [
    {
      "type": "wert1",
      "id": "wert2"
    }
  ]
}
Davon brauche ich aber nur "links", außerdem kann ich verschiedene JSON bekommen, aber "links" ist immer dabei. Also dachte ich mir "mache einfach eine class mit nur "links":
Delphi-Quellcode:
  type T2 = class
    FStart : String;
    FXxx : String;
    FZzz : String;
  end;
  type T1 = class
  private
    FLinks : T2;
  end;
dazu passen sage ich dann:
TempRes := TJSON.JsonToObject<T1>(sContent); Hier fliegt er dann raus in REST.JSonReflect in
procedure TJSONUnMarshal.PopulateFields(JsonFields: TJSONObject; Data: TObject;
JsonCustomizer: TJSONPopulationCustomizer);
in Zeile 2969
Delphi-Quellcode:
        else if jsonFieldVal is TJSONArray then
        begin
          rField := GetFieldType(Data, FieldName);
          // Unmarshal TList<T>.FListHelper as dynamic array using 10.2 layout
          if (rField.FieldType.Handle = TypeInfo(System.Generics.Collections.TListHelper)) and // <- Hier
             (I < JsonFields.Count - 1) and
             (string.CompareText('listHelper', FieldName) = 0) and
             (string.CompareText('items', JsonFields.Pairs[I + 1].JsonString.Value) = 0) then
          begin
denn GetFieldType(Data, FieldName); gibt bei FieldName "included" den Wert "nil" zurück.
(Habe das Bild aus dem Debugger auch mal als Json_Err.jpg angehangen!)

Ich hoffe das ist irgendwie verständlich geschrieben.

Ist das ein bekannter Delphi-Fehler? Das wenn das letzte Objekt ein Array ist,
dass man die Klasse dann nicht kürzen kann oder sowas?
Ist es nicht möglich eine Klasse zu kürzen? Was wenn ich von einer Stelle ein Json bekomme
und irgendwann hängen die schonmal was an, ohne dass ich das mitbekomme?
Dann fliegt mir das Programm um die Ohren?

Hatte jemand das auch schonmal und kann das Verhalten bestätigen?

Nutzt ihr andere JSon-Parser, welche schneller/besser/toller sind,
oder in diesem Fall gar "Fehlerfrei" (falls ich selbst nicht einen Denkfehler drin habe)?

Vielen Dank schonmal für die Zeit!

Liebe Grüße
Incocnito
Angehängte Grafiken
Dateityp: jpg Json_Err.jpg (37,9 KB, 13x aufgerufen)
  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 02:20 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