Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Json Superobject Fragen/ Problem (https://www.delphipraxis.net/188131-json-superobject-fragen-problem.html)

Pet04 3. Feb 2016 07:16


Json Superobject Fragen/ Problem
 
Hallo zusammen,

Ich muss ein Json File erstellen der folgende Struktur hat.

Code:
{
   "zahlungsmittel": "Bankomat",
   "nachbonieren": true,
   "positionen": [
      {
         "bezeichnung": "Rechnung Nr. 24",
         "menge": 1,
         "einzelpreis": 12000,
         "ust": 19
      },
      {
         "bezeichnung": "Rechnung Nr. 24",
         "menge": 1,
         "einzelpreis": 2000,
         "ust": 19
         ]
}
Ich Habe im Netz "Superobject" gefunden und versucht damit die Json Files zu erstellen.

Leider habe ich ein Problem, dass ich die Struktur bzw. Reihenfolge nicht hinbekomme. Die Bezeichnungen sind Variabel

Hier mein Beispielcode Code:

Benutze Delphi XE2 Pro


Delphi-Quellcode:
//...
var
  json, json_sub: ISuperObject;
 
begin

   json := SO;

   json.S['zahlungsmittel'] := 'Bar';
   json.O['positionen'] := SA([]);
   json.s['Bezeichnung'] := 'P1';
   json.s['menge'] := '1';
   json.s['einzelpreis'] := '1490';
 //json.S['zahlungsmittel'] := 'Bar';
 //json.O['zahlungsmittel'] := SA([]);

    json.SaveTo(Belegname+'.json');
    json := nil;
    json_sub := nil;

end;
Ich hoffe Ihr könnt mir helfen.



Gruß Pet

PS hatte mit Json noch nichts zu tun.

Sir Rufo 3. Feb 2016 08:33

AW: Json Superobject Fragen/ Problem
 
Schreibe dir erst eine Struktur, wie die Datei aussehen soll
Delphi-Quellcode:
unit Unit1;

interface

uses
  superobject;

(*****************************************************************************
 * {
 *    "zahlungsmittel": "Bankomat",
 *    "nachbonieren": true,
 *    "positionen": [
 *       {
 *          "bezeichnung": "Rechnung Nr. 24",
 *          "menge": 1,
 *          "einzelpreis": 12000,
 *          "ust": 19
 *       },
 *       {
 *          "bezeichnung": "Rechnung Nr. 24",
 *          "menge": 1,
 *          "einzelpreis": 2000,
 *          "ust": 19
 *          ]
 * }
 *****************************************************************************)

type
  TPositionJSON = record
  private
    [ SOName( 'bezeichnung' ) ]
    FBezeichnung: string;
    [ SOName( 'menge' ) ]
    FMenge: Integer;
    [ SOName( 'einzelpreis' ) ]
    FEinzelPreis: Integer;
    [ SOName( 'ust' ) ]
    FUmsatzSteuer: Currency;
    function GetEinzelPreis: Currency;
    procedure SetEinzelPreis( const Value: Currency );
  public
    property Bezeichnung : string read FBezeichnung write FBezeichnung;
    property Menge      : Integer read FMenge write FMenge;
    property Einzelpreis : Currency read GetEinzelPreis write SetEinzelPreis;
    property UmsatzSteuer: Currency read FUmsatzSteuer write FUmsatzSteuer;
  end;

  TWhateverJSON = class
  private
    [ SOName( 'zahlungsmittel' ) ]
    FZahlungsmittel: string;
    [ SOName( 'nachbonieren' ) ]
    FNachbonieren: Boolean;
    [ SOName( 'positionen' ) ]
    FPositionen: TArray<TPositionJSON>;
  public
    property Zahlungsmittel: string read FZahlungsmittel write FZahlungsmittel;
    property Nachbonieren : Boolean read FNachbonieren write FNachbonieren;
    property Positionen   : TArray<TPositionJSON> read FPositionen write FPositionen;
  end;

implementation

{ TPositionJSON }

function TPositionJSON.GetEinzelPreis: Currency;
begin
  Result := FEinzelPreis / 100;
end;

procedure TPositionJSON.SetEinzelPreis( const Value: Currency );
begin
  FEinzelPreis := Value * 100;
end;

end.
dann fülle die Struktur mit Leben und einfach durch SO jagen, fertig.

Delphi-Quellcode:
uses
  superobject;

var
  lWE : TWhateverJSON;
begin
  lWE := TWhatever.Create;

  // Datein in lWE rein

  lWE.ToJSON().SaveToFile( 'foo.json' );
end;

Pet04 3. Feb 2016 13:37

AW: Json Superobject Fragen/ Problem
 
wie bekomme ich nun die Positionen mit Daten gefüllt.

lWE.FPositionen ???

Sir Rufo 3. Feb 2016 13:40

AW: Json Superobject Fragen/ Problem
 
Zitat:

Zitat von Pet04 (Beitrag 1329253)
wie bekomme ich nun die Positionen mit Daten gefüllt.

lWE.FPositionen ???

Ich würde es ja mit einer der
Delphi-Quellcode:
public property
versuchen.
Delphi-Quellcode:
TWhateverJSON.Positionen
scheint mir ein aussichtsreicher Kandidat zu sein.

Dem einfach ein Array mit Positionen zuweisen


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