![]() |
TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Hallo @ALL,
ich arbeite mich gerade etwas in REST ein und habe da ein kleines Problem - ist bestimmt nix Wildes ;-) Wenn ich die Werte auslese zB so: var o: TJSONObject; begin o := FJSONArray.Items[FCurrentIndex] as TJSONObject; edStrasse.Text := o.GetValue('strasse').ToString; , um sie anzuzeigen, dann stehen die in edStrasse.Text immer mit beginnendem und abschliessendem dopp. Hochkomma "hinterm Berg". Ist das nur ne Einstellung oder was mache ich falsch/fehlt da? Wäre super.. Tks vorab |
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Es gibt einmal
Delphi-Quellcode:
und
GetValue(..)
Delphi-Quellcode:
.
GetValue<T>(..)
Du kannst die Werte direkt als String, Integer, Single usw. auslesen indem du die generische Version benutzt:
Delphi-Quellcode:
edStrasse.Text := o.GetValue<String>('strasse');
|
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Danke erstmal für die Info, aber irgendwie verstehe ich das nicht.
Ich habe die Sourcen 1:1 aus einem Delphi-Skill-Sprint übernommen und da gabs dieses Problem nicht. ( ![]() Auf jeden Fall Tks - ich versuche es mal so und schaue mir die Objekte mal näher an, was da evtl. noch so geht. RW |
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Delphi-Quellcode:
macht das Gleiche wie
TJSONValue.ToString()
Delphi-Quellcode:
und liefert den Wert als JSON zurück.
TJSONValue.ToJSON()
Ein JSON-String ist nun mal ein String mit Quotes. Wenn du einfach nur den Wert (des JSON-String) haben möchtest, dann nimm
Delphi-Quellcode:
.
TJSONValue.Value()
|
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Vorsicht:
Code:
ToString
public Returns a string containing the class name. |
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Zitat:
Delphi-Quellcode:
Wie so oft ist die Dokumentation nur ein Anhaltspunkt, gerade wenn wir es mit virtuellen Methoden zu tun haben.
function TJSONAncestor.ToString: string;
var Buf: TStringBuilder; begin Buf := TStringBuilder.Create(256); try ToChars(Buf); Result := Buf.ToString(True); finally Buf.Free; end; end; |
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Missverständnis: Ich wollte darauf hinweisen, was ToString üblicherweise macht. Dass ToString hier was anderes als den Klassennamen zurückliefert, ist eine Ausnahme (deren Sinn ich nicht sehe).
|
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Zitat:
Delphi-Quellcode:
ist dafür da um eine String-Repräsentation der Klassen-Instanz zu bekommen. Diese Methode ist erstmalig bei
ToString
Delphi-Quellcode:
als
TObject
Delphi-Quellcode:
definiert (soll heißen: kann und darf überschrieben werden) und dort liefert diese einfach nur den Klassennamen zurück.
virtual
Diese Methode ist nicht dazu gedacht, den Klassennamen zu erhalten, das geht wesentlich besser über andere Wege. So steht es auch in der Dokumentation: Zitat:
|
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
TObject.ToString() ist nur so implementiert damit man überhaupt etwas hat. Besser als nichts 🤷
|
AW: TJSONObject.GetValue liefert immer Werte in doppelten Hochkommas
Hallo,
o.GetValue('strasse').Value; sollte gehen. ToString ist hier nicht für gedacht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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