![]() |
AW: Ist "true" valides JSON?
Zitat:
(links Client-Request, rechts Server) true=true false=false "true"=true "false"=true 0=false 1=true >1=true |
AW: Ist "true" valides JSON?
0=false
"0"=true Ja, wenn man den "Stringinhalt" nicht interpretiert, dann * ein leerer String ist
Delphi-Quellcode:
0
* ein String mit irgendwas drin, der ist ungleich
Delphi-Quellcode:
0
* und alles ungleich
Delphi-Quellcode:
(C=null, D=nil) ist
0
Delphi-Quellcode:
true
(da wird quasi einfach alles hart nach Integer gecastet und =0 ist false, sowie <>0 wird true) |
AW: Ist "true" valides JSON?
Zitat:
Und zu der original Frage: Ich hab ehrlich gesagt jetzt nicht in einer Spezifikation nachgeschaut aber meinem Verständnis nach ist "True" gültiges JSON. Es ist ein einzelner Json-String. true wäre auch gültig und wäre ein einzelner Json-Bool. |
AW: Ist "true" valides JSON?
Ich handhabe es ehrlich gesagt genauso, und hatte so auch noch nie Probleme beim Zusammenspiel von Delphis System.JSON und JSON-Bibliotheken für andere Sprachen, z.B.
![]()
|
AW: Ist "true" valides JSON?
Ich habe den Parser jetzt dahingehend angepasst, dass man mit einem XPath "/" ein Rootelement ohne Objektstruktur als Wert ansprechen kann.
Davon unabhängig ist das Lesen von Bool-Strings mit TJSONObject dennoch seltsam:
Delphi-Quellcode:
Womit immer noch nicht geklärt ist, wie der Parser hier eigentlich Strings von Bools unterscheidet.
if ParseJSONValue('"true"') is TJSONBool then ... // Ergibt ein JA
Umgekehrt erzeugt er bei mir aber auch bei
Delphi-Quellcode:
den String
(JSONValue as TJSONBool).AsBoolen := True
Code:
Also mit Anführungszeichen. Das macht mich jetzt echt knülle weil ich nicht weiß was die Serverparser draus machen :shock: Ich hab da bisher nicht drauf geachtet... :pale:
"true"
|
AW: Ist "true" valides JSON?
Boolean Werte haben in JSON keine Anführungszeichen. Wenn der Server "true" schickt ist das technisch ein String. Was die Anwendung damit macht ist ne andere Sache.
"true" in einer JSON-Klasse als Boolean zu werten halte ich für falsch. Was du da schreibst kann ich übrigens nicht nachvollziehen:
Delphi-Quellcode:
val ist in dem Fall ein TJSONString, kein TJSONBool.
procedure TForm4.FormCreate(Sender: TObject);
var val: TJSONValue; begin val := TJSONObject.ParseJSONValue('"true"'); Caption := val.ClassName; end; |
AW: Ist "true" valides JSON?
Ich muss das Montag mal in Ruhe durchgehen. Eben noch mal kurz mit der 10.3 CE getestet, da verhält sich das auch anders. Irgendwas stimmt mit dem TJSONObject-Parser in meinem dienstlichen 10.2.3 Pro nicht. Jetzt ist aber erst mal Wochenende :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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