Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi TJsonObject Parsen (https://www.delphipraxis.net/173452-tjsonobject-parsen.html)

SyntaxXx 25. Feb 2013 20:32

TJsonObject Parsen
 
Guten Abend zusammen,
und zwar habe ich eine Textfile mit einem langen Json String.
Nun wollte ich diesen Parsen, doch ich hab keine Ahnung wie ich das angehen soll.

Ich habe mich ein wenig schlau gemacht und habe in den Units "DBXJSON, DBXJSONReflect" das TJsonObject gefunden.
Nur leider habe ich keine Ahnung wie ich dort eine Datei bzw. String laden und parsen könnte.
Und auch das Wiki von Embarcadero selbst sagt nicht wirklich viel.

Jetzt ist die Frage, ob jemand von euch mir helfen könnte, wie man einen String parst.

(SuperObject.pas möchte ich eigentlich nicht verwenden)

Uwe Raabe 25. Feb 2013 23:27

AW: TJsonObject Parsen
 
Was steht denn in dem JSON-String?

vagtler 26. Feb 2013 05:45

AW: TJsonObject Parsen
 
Zitat:

Zitat von SyntaxXx (Beitrag 1205059)
[...] (SuperObject.pas möchte ich eigentlich nicht verwenden)

Warum?

Sir Rufo 26. Feb 2013 08:07

AW: TJsonObject Parsen
 
Wenn man die Begrifflichkeiten kennt, warum kein Blick in die Doku?

http://docwiki.embarcadero.com/Libra...ParseJSONValue

SyntaxXx 27. Feb 2013 19:33

AW: TJsonObject Parsen
 
Ich habe mich jetzt dazu doch SuperObject zu benutzen, da es viel einfacher zu verwenden ist.

Jetzt hab ich nur ein Problem.
Mein String sieht so aus:

Code:
{
"info":{

    "file":[
        {
            "id":"123",
            "name":"index.php"
        },
        {
            "id":"124",
            "name":"index.html"
        }
    ]
}
Wie komme ich hier jetzt an die Daten von den beiden ID Feldern?

gzuz 3. Feb 2016 09:14

AW: TJsonObject Parsen
 
Hallo,
ich habe momentan das selbe Problem.
Mein JSONString hat den selben Aufbau wie in dem vorherigen Beitrag.
Aber wir komme ich an , in diesem Fall die IDs, ran?

Ich benutze delphi 10 seattle

Freue mich über jede Antwort :oops:

Sir Rufo 3. Feb 2016 09:18

AW: TJsonObject Parsen
 
Schau mal dort nach

gzuz 3. Feb 2016 09:22

AW: TJsonObject Parsen
 
Vielen dank, endlich etwas Aufklärung :)

gzuz 3. Feb 2016 09:56

AW: TJsonObject Parsen
 
Ich habe allerdings noch eine Frage.
Mein JSONString unterteilt sich in zwei Objekte, welche jeweils aus einem Array bestehn. Mein Problem ist, dass ich nicht weiß wie man, wenn man den gesamten Response als String hat, ihn in zwei objekte zu teielen, um damit dann weiter arbeiten zu können.
Also ein Objekt 1 als String bekommt und Objekt 2 als String bekommt. Ich habe kein Problem mit dem Auslesen von Strings oder anderen datentypen solange ich nur ein obj. habe.

Ich lese mich erst seit zwei Tagen ein, habe aber schon gefühlt jeden Forumbeitrag durchforstet aber nur wenig nützliches gefunden.
abgesehen davon dass ich JSON immer noch nicht richtig verstanden habe.

Sir Rufo 3. Feb 2016 10:09

AW: TJsonObject Parsen
 
Wie in den anderen Threads schon genannt:

Strukturen definieren und einfach benutzen:
Code:
{
  "foo":{
    "items":[
      {
        "name":"bla"
      },
      {
        "name":"blupp"
      }
    ]
  },
  "bar":{
    "items":[
      {
        "name":"blabla"
      },
      {
        "name":"blubber"
      }
    ]
  }
}
Delphi-Quellcode:
type
  TItemJSON = class
  private
    [JsonName('name')]
    FName: string;
  public
    property Name: string read FName;
  end;

  TItemsJSON = class
  private
    [JsonName('items')]
    FItems: TArray<TItemJSON>;
  public
    property Items: TArray<TItemJSON> read FItems;
  end;

  TContainerJSON = class
  private
    [JsonName('foo')]
    FFoo: TItemsJSON;
    [JsonName('bar')]
    FBar: TItemsJSON;
  public
    property Foo: TItemsJSON read FFoo;
    property Bar: TItemsJSON read FBar;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 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