![]() |
Json unbekanntes feld abfangen
Habe jetzt mal den channel entfernt und gehe nur über programs (nur zum testen).
Habe jetzt folgendes Problem. Ich habe die Felder vordefiniert.
Delphi-Quellcode:
jetzt kann es vorkommen das ein Feld nicht existiert warum auch immer.
EntryEpgNames: TEpgEntryNames = ('i_url', 'e', 'g', 'ry_u', 'i', 'sr_u', 'c',
'r_e', 'rg_u', 'e_no', 's', 't', 'ser_e', 'c_ids', 'et', 'i_t','ts_id', 'id', 'tms_id', 's_no', 'success'); Als Beispiel 5 Arrays habe den Eintrag 'ry_u' das 6 aber nicht. Wie kann ich das abfangen so das der json string trotzdem weiter analysiert wird. Bei mir springt er raus wenn er fehlt. Ich habe ja keinen Einfluss darauf welche Daten übergeben werden. Hier!
Delphi-Quellcode:
Sehr stressig Json aber besser als mit pos alles von Hand auszuwerten. (Wenn es denn funktioniert)
case VarType(AData) and VarTypeMask of
varString, varUString, varWord, varLongWord: begin if not FItems.TryGetValue(AData, Result) then raise EJSONUnknownFieldOrIndex.Create(format('Unknown field: %s', //<<<<<< [AData])) else exit; end; |
AW: Json unbekanntes feld abfangen
Kennt sich wirklich niemand mit Json aus?
Kann ich mir eigentlich nicht vorstellen. Hmmm... |
AW: Json unbekanntes feld abfangen
Vielleicht liegt es an mir, aber ich schaffe es nicht, eine konkrete Frage herauszulesen. Wie sieht das JSON konkret aus und welche Bibliothek verwendest du zum Parsen?
|
AW: Json unbekanntes feld abfangen
Zitat:
Im Array befindet sich ein Feld das in der übergebenen Datei nicht vorhanden ist. Das will ich abfangen dabei ist es unerheblich welchen Parser oder Bibliothek ich verwende weil es eine allgemein Frage ist. Danke trotzdem. Zitat:
|
AW: Json unbekanntes feld abfangen
Und wenn du das
Delphi-Quellcode:
in dem Code einfach weglässt?
raise
|
AW: Json unbekanntes feld abfangen
Zitat:
|
AW: Json unbekanntes feld abfangen
In dem Fall ist das Code-Schnipsel offenbar zu kurz. Interessant wäre insbesondere der Teil, der die Verwendung von
Delphi-Quellcode:
zeigt. Auch ein komplettes JSON in unterschiedlichen Ausprägungen wäre eventuell hilfreich.
EntryEpgNames
|
AW: Json unbekanntes feld abfangen
Zitat:
![]() |
AW: Json unbekanntes feld abfangen
Wäre es auch möglich, eine JSON-Datei mit Demodaten zur Verfügung zustellen?
Bis bald... Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
Entfernt im nächsten Beitrag enthalten. |
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. |
AW: Json unbekanntes feld abfangen
zur zeit wird der Channel auf diese weise eingelesen.
Delphi-Quellcode:
Wie man sehen kann ist das sehr aufwendig und es ist nicht immer garantiert das diese art des Parsen zum gewünschten erfolg führt.
// Ignore: '{"channel_groups":'
// a channel-definition begins with "display_alias": " PosNext := PosEx('"display_alias"', Data, 1); // get begin of first channel id := 0; n := 0; //Log('UPDCHL', 'LEN: ' + inttostr(length(data))); while (PosNext > 0) do begin //LOG('UPDCHL', '------------------------'); inc(PosNext, 1); inc(n); Application.ProcessMessages; // --- Read all values in order of apperance: // "display_alias" - NOZ USED // 1) sha := GetBool(posnext, Data, '"sharing": '); // 2) rad := GetBool(posnext, Data, '"is_radio": '); // 3) tit := GetStr(PosNext, Data, '"title": "', '"'); // 4) tit := DecodeJString(tit); cid := GetStr(posnext, Data, '"cid": "', '"'); // 5) //Log('UPDCHL', inttostr(PosNext) + ' | CID: ' + cid); num := GetStr(PosNext, Data, '"number": ',','); // 6) //Log('UPDCHL', inttostr(PosNext) + ' | ZatNum: ' + num + ' | RecNum: ' + inttostr(n)); // Here: ... EPG-NEXT 7) rec := GetBool(posnext, Data, '"recording": '); // 8) // --- Check if Channel already exists: x := GetChlbyCID(1, cid, ChlRec); if (x < 0) then begin // NOT FOUND !!! New ChlRec New(ChlRec); // create a new record: id := FCHLList.Add(ChlRec); //Log('UPDCHL', 'New ChlRec: '); // + inttostr(id +1) + ' - ' +booltostr(rad, true)); CHLrec.SortNum := -1; CHLrec.QSelect := -1; // no Quality-Rec selected // ----- DYNAMIC-DATA ----- ChlRec.Qualy := TList.Create; CHLrec.EPG := TList.Create; end; // else // Log('UPDCHL', '********** CHL AVAILABLE: ' + booltostr(ChlRec.Is_Radio, true)); // --- Set values new: ChlRec.Sharing := sha; ChlRec.Is_Radio := rad; StrLCopy(CHLrec.Title, PAnsiChar(tit), High(ChLrec.Title) - 1); StrLCopy(CHLrec.CID, PAnsiChar(cid), High(CHLrec.CID) - 1); ChlRec.Num := StrToInt(num); ChlRec.Recording := rec; // --- check CHANNEL-QUALITIES: // Section "qualities" will / must be present // we should have min. 1 (SD) , mostly 2 (HD+SD), more ? // TRICKY: first read "recommendations" for max. loop-position ! posrem:= PosEx('"recommendations"', Data, posnext); // REMAIN "JUMP" numQRec := -1; // --- Clear QRecs if available: for i := 1 to ChlRec.Qualy.Count do Dispose(PChlQualyRec(ChlRec.Qualy[i - 1])); ChlRec.Qualy.Clear; // --- Read QRecs new s := GetStr(posnext, Data, '"stream_types": [', '],'); // get first qualy-data while (PosNext > 0) AND (PosRem > PosNext) do begin inc(numQrec); New(QRec); // 10) ChlRec.Qualy.Add(QRec); FillChar(QRec^, sizeof(TChlQualyRec), 0); // title - UNUSED HERE QRec.stream_types := GetSTreamTypes(s); QRec.level := 0; // default undefined s := GetStr(posnext, Data, '"level": "', '",'); if (s = 'hd') then QRec.level := 2; if (s = 'sd') then QRec.level := 1; s := GetStr(posnext, Data, '"logo_token": "', '",'); StrLCopy(QRec.logo_token , PAnsiChar(s), High(QRec.logo_token) - 1); s := GetStr(posnext, Data, '"availability": "', '"'); QRec.available := (s = 'available'); inc(PosNext, 5); // jump over last bracketsm komma & spaces ! //LOG('UPDCHL', '--- Q' + inttostr(numQRec) + ' - avail: ' + booltostr(QRec.available, true) + // ' | level: ' + inttostr(QRec.level)); // ----- Check if selectable: if (ChlRec.QSelect < 0) then if QRec.available then ChlRec.QSelect := ChlRec.Qualy.Count - 1; s := GetStr(posnext, Data, '"stream_types": [', '],'); // get next qualy-data end; //LOG('UPDCHL', '--- selected: ' + inttostr(ChlRec.QSelect)); PosNext := PosRem; // !!! ... because PosNext is in range of next channel ! // Ignore: "recommendations" // 11) // Here: ... EPG-Now 7) // Ignore: "id": "ard", // 13) // Ignore: "aliases": ["daserste"] // 14) // IGNORE: FAV-block PosNext := PosEx('"display_alias"', Data, PosNext); // // get begin of next channel end; Meine frage daher wie kann ich das mit mORMot Json Parser umsetzen? Sollte das funktionieren sollen mir die 280 KB egal sein. Kenne das Framework nicht und ellenlange Englische Seiten zu lesen ist nicht mein Ding. EDIT: Dann kann ich
Delphi-Quellcode:
ShowMessage(docPrograms.S['g'].ToCSV);
In D2010 nicht übergeben so wie man im Shot sehen kann. (Ist nur ein String nicht gesplittet) Zitat:
|
AW: Json unbekanntes feld abfangen
Ich habe das jetzt nur mal schnell überflogen. So sollte es aber funktionieren. Wenn du heute Abend (Nacht) noch ein Problem damit hast, sage einfach bescheid. Ich schaue mir das dann gerne mal an.
Delphi-Quellcode:
Bis bald...
var
iRun, 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]; ShowMessage(docChannels.S['display_alias']); ShowMessage(docChannels.I['number'].ToString); end; end; Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
Danke schön. Hmm.. Ich glaube wir haben uns nicht richtig verstanden. Dein Schnipsel gibt mir die Value von display_alias zurück. Das ist aber nicht was ich wollte. Mein bestreben ist in der Json nach 'display_alias' zu suchen und darauf hin den Count auszulegen. display_alias kommt 172 mal in der Json vor diese und die nachfolgenden Einträge muss ich parsen bis zum nächsten 'display_alias' und so lange bis er halt nicht mehr vorkommt. Also nicht auf docChannels sondern auf
Delphi-Quellcode:
docChannels.S['display_alias']
Es gibt ja nur diese möglichkeiten.. docChannels.SearchItemByProp docChannels.SearchItemByValue aber beides führte nicht zum gewünschten Ergebnis. PS: EPG ist fertig und funktioniert soweit. Nun muss ich nur noch die Channels erfolgreich rüberbringen. ;) so geht es nicht..
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type TChannelsData = record display_alias: string; sharing: BOOL; is_radio: BOOL; title: string; cid: string; number: LongInt; recording: BOOL; success: BOOL; end; var iRun, i, nRun: Integer; doc: TDocVariantData; docChannelGroup: PDocVariantData; docChannels: PDocVariantData; x: TRawUtf8DynArray; gChannels: array of TChannelsData; 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['display_alias'].Count - 1 do // Wie komme ich an den Count und wie finde ich den nächsten Eintrag von 'display_alias' 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; |
AW: Json unbekanntes feld abfangen
Ich habe deinen Post mehrmals durchgelesen, aber so ganz genau weis ich immer noch nicht, welche Infos dir fehlen.
Zitat:
Hier noch mal ein Beispiel. Zur Sicherheit gebe den vollständigen Pfad für die JSON-Datei ein.
Delphi-Quellcode:
Kleiner Hinweis: Lade die JSON-Datei in Notepad++. Hier kannst du Zweige ein- und ausklappen und die Struktur, ob es ein Objekt oder Array ist, sofort erkennen. Bei einem Array wendest du das oben gezeigt Schema zum Durchlaufen an und kopierst danach nur noch die Namen der Eigenschaften aus der JSON-Datei in die Zugriffsfunktionen.
var
s: String; i: Integer; iRun, 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; //=> i := 0; 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]; s := s + ' | ' + docChannels.S['display_alias']; Inc(i); end; end; ShowMessage(s); ShowMessage(i.ToString); end; Bis bald... Thomas |
AW: Json unbekanntes feld abfangen
ok dann nochmal ;)
Delphi-Quellcode:
PosNext := PosEx('"display_alias"', Data, 1); // get begin of first channel
Ist der erste Index vom Knoten "display_alias" Dann kommt die schleife
Delphi-Quellcode:
while (PosNext > 0) do
die läuft jetzt solange durch bis "display_alias" nicht mehr gefunden wird. Die letzte Zeile schaltet zum nächsten Index Knoten "display_alias"
Delphi-Quellcode:
PosNext := PosEx('"display_alias"', Data, PosNext); // // get begin of next channel
Das ist was ich mit dem Parser nicht geregelt bekomme. EDIT: Ok du gibst jetzt alle "display_alias" aus. Aber! Der Rest zwischen dem nächsten "display_alias" der fehlt. Verstehst du was ich meine? Also du gehst auf das erste "display_alias" dann muss ich die nachfolgenden Einträge analysieren..
Delphi-Quellcode:
und erst dann auf das nächste "display_alias" springen. .hier lese ich dann wieder die nachfolgenden variablen ein bis zum nächste "display_alias"
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']; Da habe ich meine probleme mit. Verstehe das Framework noch nicht so richtig. Danke für die Hilfe |
AW: Json unbekanntes feld abfangen
Hmm das scheint es zu sein.
Delphi-Quellcode:
Nochmals Danke
procedure TForm1.Button1Click(Sender: TObject);
type TChannelsData = record display_alias: string; sharing: BOOL; is_radio: BOOL; title: string; cid: string; number: LongInt; recording: BOOL; success: BOOL; end; var s: String; i: Integer; iRun, nRun: Integer; doc: TDocVariantData; docChannelGroup: PDocVariantData; docChannels: PDocVariantData; gChannels: array of TChannelsData; begin doc.InitJSONFromFile('Channels_data.json', JSON_OPTIONS_FAST_EXTENDED); if not doc.B['success'] then Exit; i := 0; 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]; 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']; Inc(i); end; end; ShowMessage(IntToStr(i)); end; |
AW: Json unbekanntes feld abfangen
Wenn du auch die Werte für das qualities Array benötigst, dann einfach das obere Schema für den Zugriff auf Arrays verwenden. Es ist immer die Wiederholung des gleichen Schemas.
Bis bald... Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
|
AW: Json unbekanntes feld abfangen
Habe immer noch ein Problem mit den stream_types
Delphi-Quellcode:
Wie übergebe ich jetzt die werte für stream_types aus der Json?
const
MAX_STREAM_TYPES = 7; TStreamTypes : array[0..MAX_STREAM_TYPES] of string = ( 'dash', // 0 1 MPEG VLC ! 'dash_playready', // 1 2 MPEG 'dash_widevine', // 2 4 MPEG 'hls', // 3 8 APPLE VLC & LAV ! 'hls7', // 4 16 APPLE 'hls7_fairplay', // 5 32 APPLE 'hds', // 6 64 ADOBE none 'smooth_playready' // 7 128 ? ); type PQualitiesData = ^TQualitiesData; TQualitiesData = packed record logo_black_84: string; title: string; stream_types: string; level: string; logo_white_42: string; logo_token: string; logo_black_42: string; logo_white_84: string; availability: string; end;
Delphi-Quellcode:
Das andere geht soweit.
i := 0;
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 // Channels docChannels := docChannelGroup.A['channels']._[nRun]; 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']; // Qualities docQualities := docChannels.A['qualities']._[xRun]; SetLength(gQualities, Length(gQualities) + 1); gChannels[i].qualities.logo_black_84 := docqualities.S['logo_black_84']; gChannels[i].qualities.title := docqualities.S['title']; // gChannels[i].qualities.stream_types // Wie auswerten/ übergeben gChannels[i].qualities.level := docqualities.S['level']; gChannels[i].qualities.logo_white_42 := docqualities.S['logo_white_42']; gChannels[i].qualities.logo_token := docqualities.S['logo_token']; gChannels[i].qualities.logo_black_42 := docqualities.S['logo_black_42']; gChannels[i].qualities.logo_white_84 := docqualities.S['logo_white_84']; gChannels[i].qualities.availability := docqualities.S['availability']; Inc(i); end; end; EDIT: Ich kann jetzt so vorgehen.
Delphi-Quellcode:
Dann bekomme ich aus der Json diese werte zurück.
gChannels[i].qualities.stream_types := docqualities.S['stream_types'];
Code:
Ist das so gedacht und korrekt?
"stream_types": [
"dash", "dash_playready", "dash_widevine", "hls7", "hls7_fairplay" ], Das wären dann die Typen die unterstütz werden? Richtig? |
AW: Json unbekanntes feld abfangen
Zitat:
Bis bald... Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
Aber ich werde mir mal den unterschied anschauen was dabei rauskommt. |
AW: Json unbekanntes feld abfangen
Zitat:
Bis bald... Thomas |
AW: Json unbekanntes feld abfangen
Zitat:
docqualities.A['stream_types'].ToCSV <> docqualities.S['stream_types'].ToCSV Deshalb ging es nicht. Danke |
AW: Json unbekanntes feld abfangen
Kann man mit der SynCommons prüfen ob Doppelte Einträge vorhanden sind?
Ich bekomme beim Einlesen immer 2 Einträge doppelt. Deshalb sind die unteren 2 Einträge (Programme) falsch. Wenn ich jedoch in Json schaue gibt es nur einen
Code:
Frage mich warum der Einrag doppelt addiert wird.
"programs": [],
"cid": "klasik_tv_hr" Hier ist auf jedenfall ein Fehler.
Code:
Bei
"cid": "cmc"
}, { "programs": [], "cid": "klasik_tv_hr" }, { "programs": [ { "i_url": "http://images.zattic.com/cms/b7a6d571dc8c1cc016f7/format_480x360.jpg", "e": 1608624000, "g": [ "Musik"
Code:
Kategorie programs steht gar nichts. Wie soll man sowas abfangen.
"programs": [],
"cid": "klasik_tv_hr" |
AW: Json unbekanntes feld abfangen
Delphi-Quellcode:
if programs_bzw,_irgendein_JSON_Wert/Objekt/Array gleich leer then
Diesen_Teil_ignorieren; |
AW: Json unbekanntes feld abfangen
Zitat:
Mit ignorieren ist es nicht getan denn ich muss ja dazwischen prüfen ob der Eintrag schon vorhanden ist. Geht doch nur wenn man das Array nach dem erstellen neu dimensioniert. Oder? Das Problem ist nicht das Arrays leer sind sondern das doppelte Einträge in der Json vorhanden sind. Das wirft alles durcheinander. Muss mal sehen wie ich die aussortieren kann. Ist schwierig Array of Record neu zu dimensionieren. Ok wird schon |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 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