Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   RestServer Antwort Json ohne "[" Klammern (https://www.delphipraxis.net/188108-restserver-antwort-json-ohne-%5B-klammern.html)

ScharfeMietze 1. Feb 2016 14:37

RestServer Antwort Json ohne "[" Klammern
 
Ich muss euch nochmal stören.

Ich habe eine Serverantwort in Json von einem Rest server
Code:
{"result":["Test<\u00F6\u00E4\u00FC\u00F6\u00E4\u00FC>7"]}
1["Test<öäüöäü>7"]
Serverseite zum Üben

Delphi-Quellcode:
function TServerMethods1.updateEchoAttribute1(Key, Obj: string): String;
begin
Result:= Key + '<öäüöäü>' + Obj;
end;
Nun möchte ich die "reine" Antwort. Bisher habe ich das mit RegEx erschlagen und möchte es nun aber gerne über den Json way probieren.

Delphi-Quellcode:
var
  LJSONObject: TJSONObject;
  RestResponse: string;
begin
RestResponse:= '{"result":["Test<\u00F6\u00E4\u00FC\u00F6\u00E4\u00FC>7"]}';
LJSONObject := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(RestResponse), 0) as TJSONObject;
mmo1.Lines.Add(LJSONObject.Values['result'].ToString);
end;

Die schlichte Frage ist wie bekomme ich die -->[" und "]<-- Klammern/Gänsefüßchen entfernt.

Ich hoffe ihr könnt helfen.

lieben Gruß
SM;)

himitsu 1. Feb 2016 14:40

AW: RestServer Antwort Json ohne "[" Klammern
 
Kann es sein, dass es dazu vor Kurzem schonmal einen Thread gab? :?


ToString wird das JSON-"Objekt" als Text zurück geben.

Es gibt aber bestimmt ein Value oder AsString, das den Wert liefert. :stupid:

ScharfeMietze 1. Feb 2016 15:18

AW: RestServer Antwort Json ohne "[" Klammern
 
Genau das ist ja mein problemchen
Delphi-Quellcode:
mmo1.Lines.Add(LJSONObject.Values['result'].ToString);
liefert MIT besagten Zeichen
Code:
["Test<öäüöäü>7"]

Sir Rufo 1. Feb 2016 15:29

AW: RestServer Antwort Json ohne "[" Klammern
 
Delphi-Quellcode:
ToString
ist von der Definition her dafür da, die Instanz als String darzustellen.

Das willst du aber nicht, du willst den Wert.

Delphi-Quellcode:
TJSONObject.Values[...]
liefert ein
Delphi-Quellcode:
TJSONValue
und wenn das vom Type ein
Delphi-Quellcode:
TJSONString
ist, dann bekommt man bei
Delphi-Quellcode:
TJSONString.Value
auch den gesuchten String-Wert.

EDIT Stop, Kommando zurück, du hast dort ein
Delphi-Quellcode:
TJSONArray
und der erste Wert ist dann ein
Delphi-Quellcode:
TJSONString
;)

ScharfeMietze 1. Feb 2016 15:36

AW: RestServer Antwort Json ohne "[" Klammern
 
Magst mich gerade noch Aufklären wie ich mit einem solchen Array umzugehen habe?
Da bin ich noch Jungfräulich

Gruß
SM;)

himitsu 1. Feb 2016 15:38

AW: RestServer Antwort Json ohne "[" Klammern
 
Und jetzt nochmal meine Antwort lesen. :roll:
















Zitat:

Delphi-Quellcode:
function Value: string; virtual;
function ToJSON: string;
function ToString: string; override;
//uvm.


Sir Rufo 1. Feb 2016 15:47

AW: RestServer Antwort Json ohne "[" Klammern
 
Und wenn du von der gleichen Faulheit befallen bist wie ich, dann sparst du dir diesen gesamten Fuddelkram mit
Delphi-Quellcode:
unit Unit2;

interface

uses
  REST.Json.Types; // <- da sind die Json-Attribute definiert

type
  TResponseJSON = class
  private
    [ JsonName( 'result' ) ]
    FResultArray: TArray<string>;
  public
    property ResultArray: TArray<string> read FResultArray;
  end;

implementation

end.
und verarbeitest das ganz gemütlich mit
Delphi-Quellcode:
program foo;

uses
  System.SysUtils,
  REST.Json, // <- da ist TJson definiert
  Unit2 in 'Unit2.pas';

procedure Test;
var
  lResponse: TResponseJSON;
begin
  lResponse := TJson.JsonToObject<TResponseJSON>( '{"result":["Test<\u00F6\u00E4\u00FC\u00F6\u00E4\u00FC>7"]}' );
  try
    WriteLn( lResponse.ResultArray[ 0 ] );
  finally
    lResponse.Free;
  end;
end;

begin
  try
    Test;
  except
    on E: Exception do
      WriteLn( E.ClassName, ': ', E.Message );
  end;
  ReadLn;
end.
Weil einfach einfach einfach ist :stupid:

Sir Rufo 1. Feb 2016 15:56

AW: RestServer Antwort Json ohne "[" Klammern
 
TsTsTs ... muss man immer alles dreimal sagen
http://www.delphipraxis.net/1328714-post6.html

:stupid:

himitsu 1. Feb 2016 15:56

AW: RestServer Antwort Json ohne "[" Klammern
 
Nur zum Test.
Delphi-Quellcode:
S := (LJSONObject.Values['result'] as TJSONArray).Items[0].Value;
?

ScharfeMietze 1. Feb 2016 15:59

AW: RestServer Antwort Json ohne "[" Klammern
 
@himitsu

Doch gelesen habe ich es aber meine Versuche mit
Delphi-Quellcode:
mmo1.Lines.Add('2' + LJSONObject.Values['result'].Value);
scheitern. Ich bekomme '' als Antwort.

Wenn ich probiere dort gerade alles durch

edit: gerade den Post gesehen ... probier ich gleich


SirRufo :) das seh ich mir gleich mal an ^^ :)))))

Gruß
SM;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Seite 1 von 3  1 23      

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