AGB  ·  Datenschutz  ·  Impressum  







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

Ist das valides JSON?

Ein Thema von Rolf Frei · begonnen am 8. Feb 2021 · letzter Beitrag vom 8. Feb 2021
Antwort Antwort
Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#1

Ist das valides JSON?

  Alt 8. Feb 2021, 16:00
Ich bin gerade am Schreiben einer Delphi Klasse die mit REST.Json in der Form übergeben wrid. nun bekomme ich dann aber eine Antwort, mit der Delphi REST.Json nicht zurecht kommt.

Die Anfrage muss ich wie folgt senden. Delphi macht da su meiner Klasse genau was sie soll:
Code:
   
{
    "allowedPaymentMethodConfigurations": [
        {
            "id": 40941
        }
    ]
}
Als Antwort erhalten ich foglendes JSON, womit die Delphi Deserialisierung nicht zuerecht kommt.
Code:
{
   "allowedPaymentMethodConfigurations":[
      40941
   ]
}
Ist das wirklich valides JSON? Oder was will uns dieses Konstrukt genau sagen? Ein JSON Validator liefert hier komischerweise keinen Fehler.

Geändert von Rolf Frei ( 8. Feb 2021 um 16:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ist das valides JSON?

  Alt 8. Feb 2021, 16:02
Valide sind beide, wobei die erste Version ein Objekt-Array und die zweite ein Integer-Array beinhaltet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Ist das valides JSON?

  Alt 8. Feb 2021, 16:28
ok das würde dann heissen, dass ich hier zwei unterschiedliche Klassen machen müsste. Eine für das Senden und eine für die Antwort, damit Delphi damit zu recht kommt. Richtig?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Ist das valides JSON?

  Alt 8. Feb 2021, 16:36
Es sieht so aus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
648 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ist das valides JSON?

  Alt 8. Feb 2021, 16:40
Naja, wenn es unterschiedliche Strukturen sind, müssen deine Objekte dem logischerweise auch entsprechen. Alternativ kannst du das natürlich auch einfach "zu Fuß" auswerten, wenn das so eine relativ einfache Struktur ist - dann musst du dafür nicht extra ein Objekt anlegen.

Kleines Beispiel-Programm, welches die 40941 aus deinem Beispiel-JSON ausliest:

Delphi-Quellcode:
program jarray;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Classes,
  System.JSON,
  System.Generics.Collections;

var
  strList: TStringList;
  jValue: TJSONValue;
  jArr: TJSONArray;
begin
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    strList:=TStringList.Create;
    strList.LoadFromFile(ParamStr(1));
    jValue:=TJSONObject.ParseJSONValue(strList.Text);
    if jValue is TJSONObject then begin
      if TJSONObject(jValue).TryGetValue<TJSONArray>('allowedPaymentMethodConfigurations',jArr) then begin
        if (jArr.Count>0) and (jArr.Items[0] is TJSONNumber) then
          Writeln(TJSONNumber(jArr.Items[0]).Value)
        else
          writeln('id not found');
      end;
    end else
      Writeln('no JSON object');
    jValue.Free;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Geändert von Bbommel ( 8. Feb 2021 um 16:43 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Ist das valides JSON?

  Alt 8. Feb 2021, 16:51
Das ganze JSON Object ist schon etwas grösser. Habe das nun aber soweit angepasst, dass es nun passt. Danke für die Tipps.
  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 15:28 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