AGB  ·  Datenschutz  ·  Impressum  







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

JSON iterieren, aber wie?

Ein Thema von stifflersmom · begonnen am 24. Jun 2022 · letzter Beitrag vom 27. Sep 2022
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.419 Beiträge
 
Delphi 12 Athens
 
#1

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 09:38
Zitat:
Delphi-Quellcode:
    [JSONName('height')]
    FHeightArray: TArray<Integer>;
@LoZe: du mußt aufpassen, denn es sind keine "einheitlichen" Arrays.

also kein "length": [ 0, 1, 2 ], sondern jeweils Wert und Einheit ala "length": [ 0, "mm" ], statt als Array wäre es wohl in zwei Feldern angebrachter
Length: Integer;
LengthUnit: string; // oder Enum

oder ein nur Feld und beim Lesen in eine Grundeinheit umgerechnet
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Sep 2022 um 09:41 Uhr)
  Mit Zitat antworten Zitat
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#2

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 09:45
@himitsu war nur Copy and Paste von der Webseite... ich bin nicht über die Daten gegangen das könnte man natürlich als String einlesen
Chris
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
230 Beiträge
 
#3

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 12:36
... das könnte man natürlich als String einlesen
Ja, ne, nicht wirklich! Wie himitsu schon schreibt, die Werte sind gemischt im Array.
Wer auch immer das Json designed hat.
Wäre ja schon kein Problem in Delphi mehr, wenn es
Code:
"length": { 0, "mm" },
statt
Code:
"length": [ 0, "mm" ],
wäre.

LG Incocnito
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.710 Beiträge
 
Delphi 12 Athens
 
#4

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 12:49
Wäre ja schon kein Problem in Delphi mehr, wenn es
Code:
"length": { 0, "mm" },
Das ist aber kein gültiges JSON. Dann schon
Code:
"length": { "value": 0, "unit": "mm" },
Aber, wie du schon sagst
Wer auch immer das Json designed hat.
Es ist leider so, dass viele Entwickler beim Design solcher offenen Schnittstellen nicht über den Tellerrand ihrer Programmierumgebung hinausschauen. Das gilt auch für Delphi-Entwickler und ich bekenne mich selbst dessen (zumindest in der Vergangenheit) auch für schuldig.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
482 Beiträge
 
#5

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 13:55
Es ist leider so, dass viele Entwickler beim Design solcher offenen Schnittstellen nicht über den Tellerrand ihrer Programmierumgebung hinausschauen.
Danke für diesen Satz. Aber was folgt daraus? Scriptsprachen verleiten (können es) dazu, sich Dinge zurechtzubiegen, weil es schnell und einfach umzusetzen ist. Es werden Werte einfach "hinzu- oder umgepackt". Mit einer starren Definition ist man schnell am Einpacken. Flexible Strukturen schaffen Abhilfe. Diese lassen sich meines Wissens aktuell in Pascal nur mit mORMot realisieren und das mit herausragender Qualität. Beispiele zum Thema habe ich gepostet. Wer hat andere Strategien und welche sind es?

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.419 Beiträge
 
Delphi 12 Athens
 
#6

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 14:14
Nicht alles lässt sich immer (einfach) mit vorgefertigten Lösungen für JSON-zu-Objekt behandeln.

Manchmal muß man für gewisse Sonderfälle dann einfach selber Hand anlegen.

* entweder ohne Objektmapping arbeiten
* oder mit einem Transformation-Tool die JSON-Datei etwas umformatieren (Dinge verschieben/ändern/...)
* oder diese paar Felder nicht automatisch behandeln lassen und sie anschließend manuell aus dem JSON ins Objekt übernehmen (das was geht automatisch und dann der Rest)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
482 Beiträge
 
#7

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 18:23
Nicht alles lässt sich immer (einfach) mit vorgefertigten Lösungen für JSON-zu-Objekt behandeln.
Ich finde die Verwendung von vorhandenen getesteten Code vorteilhaft. Die Möglichkeiten von mORMot gehen weit über das hinaus, was Delphi mit Bordmitteln bietet. Trotzdem ist kein Weg verbaut. Ich kann mit mORMot bis in den atomaren Bereich durchgreifen. Mir ist noch kein Beispiel untergekommen, wo es notwendig war, aber möglich ist es. Jederzeit kann ein eigener Serialisierer mit RegisterCustomJSONSerializer/RegisterCustomJSONSerializerFromText/RegisterCustomSerializerFieldNames eingehängt werden. Wie es geht, ist hier beschrieben. Und wenn nichts mehr hilft, gibt es als JSON Allzweckwaffe noch TDocVariant.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.710 Beiträge
 
Delphi 12 Athens
 
#8

AW: JSON iterieren, aber wie?

  Alt 27. Sep 2022, 14:36
Wer hat andere Strategien und welche sind es?
Ich versuche möglichst viel mit den Bordmitteln und wenn nötig eigenen Ergänzungen abzudecken (z.B. Interceptor-Klassen). Es kommt immer wieder vor, dass Bibliotheken von Drittanbietern erst einen Zertifizierungsprozess durchlaufen müssen und nur schwer mit Updates versorgt werden können. Bei eigenem Code ist man da in der Regel deutlich lockerer. Über die Sinnhaftigkeit kann man diskutieren - führt aber zu nichts.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:33 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