AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ParseJSONVALUE wie geht das?

Ein Thema von wschrabi · begonnen am 1. Aug 2022 · letzter Beitrag vom 3. Aug 2022
 
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#8

AW: ParseJSONVALUE wie geht das?

  Alt 1. Aug 2022, 15:28
mein Tipp mach ne Klasse und nutzt ihn aus der Klasse raus.
das hier Hilft dir:
https://jsontodelphi.com/

der Aufruf ist dann ist dann nur

Delphi-Quellcode:

uses RootUnit;

function GetText(pJson:string):string;
var
  Root: TRoot;
begin
  Root := TRoot.Create;
  try
    Root.AsJson := pJson;
    Result:= Root.Data.Translations.First.TranslatedText;
    //oder per Index
    //Result:= Root.Data.Translations.Items[0].TranslatedText;
  finally
    Root.Free;
  end;
end;
Hier die Klasse

Delphi-Quellcode:
unit RootUnit;

interface

uses
  Pkg.Json.DTO, System.Generics.Collections, REST.Json.Types;

{$M+}

type
  TTranslations = class;

  TTranslations = class
  private
    FTranslatedText: string;
  published
    property TranslatedText: string read FTranslatedText write FTranslatedText;
  end;
  
  TData = class(TJsonDTO)
  private
    [JSONName('translations'), JSONMarshalled(False)]
    FTranslationsArray: TArray<TTranslations>;
    [GenericListReflect]
    FTranslations: TObjectList<TTranslations>;
    function GetTranslations: TObjectList<TTranslations>;
  protected
    function GetAsJson: string; override;
  published
    property Translations: TObjectList<TTranslations> read GetTranslations;
  public
    destructor Destroy; override;
  end;
  
  TRoot = class(TJsonDTO)
  private
    FData: TData;
  published
    property Data: TData read FData;
  public
    constructor Create; override;
    destructor Destroy; override;
  end;
  
implementation

{ TData }

destructor TData.Destroy;
begin
  GetTranslations.Free;
  inherited;
end;

function TData.GetTranslations: TObjectList<TTranslations>;
begin
  Result := ObjectList<TTranslations>(FTranslations, FTranslationsArray);
end;

function TData.GetAsJson: string;
begin
  RefreshArray<TTranslations>(FTranslations, FTranslationsArray);
  Result := inherited;
end;

{ TRoot }

constructor TRoot.Create;
begin
  inherited;
  FData := TData.Create;
end;

destructor TRoot.Destroy;
begin
  FData.Free;
  inherited;
end;

end.
Chris

Geändert von LoZe ( 1. Aug 2022 um 15:47 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 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