![]() |
AW: Json unbekanntes feld abfangen
Kleines Test Projekt.
Versucht nur die *.json zu lesen. (Der Rest wurde kommentiert) |
AW: Json unbekanntes feld abfangen
Wenn du es mit mORMot machen willst, dann hier ein kleines Beispiel. Hilfe zum Thema DocVariants findest du
![]() Eine ausführliche Hilfe zu mORMot findest du hier: ![]() ![]() ![]()
Delphi-Quellcode:
Bis bald...
var
iRun, nRun: Integer; doc: TDocVariantData; docChannels: PDocVariantData; docPrograms: PDocVariantData; begin doc.InitJSONFromFile('EPG_data.json', JSON_OPTIONS_FAST_EXTENDED); if not doc.B['success'] then Exit; //=> for iRun := 0 to doc.A['channels'].Count - 1 do begin docChannels := doc.A['channels']._[iRun]; ShowMessage(docChannels.S['cid']); for nRun := 0 to docChannels.A['programs'].Count - 1 do begin docPrograms := docChannels.A['programs']._[nRun]; ShowMessage(docPrograms.S['i_url']); ShowMessage(docPrograms.I['e'].ToString); ShowMessage(docPrograms.A['g'].ToCSV); end; end; Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
Wie ich schon sagte mit meiner nicht. EDIT: Denke nicht das ich das mache alleine die SynCommons.pas ist 3x mal so groß wie meine EXE selbst. Wenn es mit meiner Json nicht geht dann lasse ich es muss nicht unbedingt EPG Daten haben. |
AW: Json unbekanntes feld abfangen
Ja! mORMot verwendet JSON sehr intensiv. DocVariants sind nur eine Variante mit JSON komfortabel zu arbeiten. Früher habe ich auch SuperObject verwendet. Seit es mORMot gibt, nie mehr etwas anderes.
Bis bald... Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
|
AW: Json unbekanntes feld abfangen
Macht im fertigen Programm ca. 280 MB aus. Dafür ist man in 10 Minuten fertig.
Bis bald... Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
|
AW: Json unbekanntes feld abfangen
Zitat:
Frohe Weihnachten... Thomas |
AW: Json unbekanntes feld abfangen
Ohne die meisten Debuginfos (Release) wird es kleiner.
Alternativ kannst du auch mit "externen Debuginfos" kompilieren. |
AW: Json unbekanntes feld abfangen
Zitat:
Er hat geschrieben 280 MB sollte wohl 280 KB sein. Habe es mal versucht, es funktioniert auch nicht richtig oder ich mache was falsch.
Delphi-Quellcode:
erzählt mir irgendwas von
procedure TForm1.Button1Click(Sender: TObject);
var iRun, i, nRun: Integer; doc: TDocVariantData; docChannelGroup: PDocVariantData; docChannels: PDocVariantData; begin doc.InitJSONFromFile('Channels_data.json', JSON_OPTIONS_FAST_EXTENDED); if not doc.B['success'] then Exit; //=> for iRun := 0 to doc.A['channel_groups'].Count - 1 do begin docChannelGroup := doc.A['channel_groups']._[iRun]; for nRun := 0 to docChannelGroup.A['channels'].Count - 1 do begin docChannels := docChannelGroup.A['channels']._[nRun]; for i := 0 to docChannels.A['channels'].Count - 1 do begin setLength(gChannels, i + 1); gChannels[i].display_alias := docChannels.S['display_alias']; gChannels[i].sharing := docChannels.B['sharing']; gChannels[i].is_radio := docChannels.B['is_radio']; gChannels[i].title := docChannels.S['title']; gChannels[i].cid := docChannels.S['cid']; gChannels[i].number := docChannels.I['number']; gChannels[i].recording := docChannels.B['recording']; end; end; end; end; docChannels.A['channels'].Count wäre 0. ist es aber definitiv nicht. Ich habe 172 Sender. Habe die Channels_data.json mal angehängt. EDIT: Ok. Das problem ist wohl eher das ich nach dem Eintrag 'display_alias' suchen muss. Dieser hat 172 Einträge. Wie komme ich daran? Scheint nicht schlecht zu sein das Teil. @mytbo Danke. Wenn auch etwas sehr mächtig. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 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 by Thomas Breitkreuz