Thema: Delphi Ist "true" valides JSON?

Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Ist "true" valides JSON?

  Alt 22. Jan 2021, 10:45
Wieder was gelernt! Den Fall muss ich dann entsprechend behandeln in meinem Parser. Gibt es noch mehr solche Spezialfälle? Zum Teil geben die REST-Server ja die wildesten Sachen aus, manchmal sind nicht alle Fehlerzustände abgefangen und der Server würgt nur eine Standard-HTML-Fehlerseite hervor

Ich wünschte ich könnte meinen Parser mal veröffentlichen. Geht aber leider nicht, weil Auftragsarbeit. Das Ding stellt INI, JSON und XML auf eine gemeinsame Objektbasis und lässt sich mit XPath lesen und schreiben:

(INI)
Code:
[mysection]
myvalue1=Foo
myvalue2=Bar
Delphi-Quellcode:
Document['mysection/myvalue1'].AsString {= 'Foo'} {oder}
Document['mysection/[1]'].AsString {= 'Bar'}
(JSON)
Code:
{
  "objarray": [
    {"stringobj":"Foo"},
    {"stringobj":"Bar"}
  ]
}
Document['objarray[0]/stringobj'].AsString {= 'Foo'}

(XML)
Code:
<root>
  <mygroup>
    <myvalue>Foo</myvalue>
    <myvalue>Bar</myvalue>
  </mygroup>
</root>
Document['mygroup/myvalue[1]'].AsString {= 'Bar'}

Das Ziel war, den Export-Code nur einmal zu schreiben und dann je nach gewähltem Dateiformat nur die Parserklasse zu tauschen. Weil das aber so einfach zu benutzen ist, kommt es inzwischen auch im REST-Frontend zum Einsatz und da hab ich es immer wieder mit wilden Konstrukten zu tun die damals im Parser nicht berücksichtigt wurden.

Gibt der Client im Accept denn auch an, dass er JSON haben möchte?
Aber klar doch, Application/JSON

Laut Spezifikation auf https://www.json.org/json-en.html ist true (nur diese vier Buchstaben) nicht valide. Valide ist z.B. "true".
Genau, das wäre auch meine Denke gewesen. Aber ich habe an anderer Stelle auch Responses wie {"myobject":true} die ebenfalls von TJSONObject klaglos verdaut werden obwohl ich das nur so kenne: {"myobject":"true"}
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat