0

Dynamischer Abruf von Daten aus einem JSON-Object

Ich würde gerne in Tabelle A variabel pflegen, welche Elemente eines JSON-Objektes (aus einem API-Call von extern abgeholt), ich abrufen/verarbeiten möchte. In dieser Tabelle gibt es einen Feldnamen (so wie es in der API betitelt ist) und einen nachvollziehbaren Anzeigenamen. Ein User kann via Schieberegler ein Feld markieren, dass es für den Import relevant ist.

Ich hole mir jetzt mittels API-Call ein JSON-Objekt mit den Daten, basierend auf den Feldnamen die ich zuvor schon mal in einer Übersetzungs-Tabelle abgelegt habe. In dieser Tabelle markiere ich, bzw. der User, vor einem Abruf auch immer, welche Daten ich für diesen Abruf nun benötige, also mal Feld 1, 2 und 3 und mal 1, 4 und 7. Der Abruf der Daten ist bereits über die geschriebene Funktion so dynamisiert, so dass auch nur die Daten darin dann enthalten sind.

Diese Daten möchte ich mit ihren Anzeigenamen, die ich in der Übersetzungstabelle gespeichert habe, in einer Tabelle "Tabelle_Datenimport" speichern um sie weiter zu verarbeiten. In dieser Tabelle sind auch nur die Anzeigenamen vorhanden, weil die Feldnamen aus der API ja auch gar nicht sprechend sind.
Dafür lese ich in einer Schleife alle Feldnamen aus aus der "Tabelle_VerfuegbareDatenfelder" und möchte nur die zum Import markierten Felder nur aus dem geladenen JSON-Objekt verarbeiten. Jetzt will ich aber beim verarbeiten die Daten anhand ihres Feldnamens mit dem zugehärigen Anzeigenamen in die "Tabelle_Datenimport" schreiben, muss also ein Matching durchführen und dynmisch aufd die Elemente des JSON-Objekts zugreifen.

Mein Ansatz:

let fields := (select Tabelle_VerfuegbareDatenfelder where 'Importieren?' = true).Feldname;
let newRec := (create Tabelle_Datenimport);
                for field in fields do
                    let Uebersetzungsdatensatz:= (select Tabelle_VerfuegbareDatenfelder where Feldname = field);
                    set(newRec, raw(Uebersetzungsdatensatz.Anzeigename), JSONObject.Uebersetzungsdatensatz.Feldname);
                end;

Das Problem hierbei ist, dass ich JSONObject.Uebersetzungsdatensatz.Feldname gerne so aufgelöst haben möchte, dass er den Wert Uebersetzungsdatensatz.Feldname als Value des JSON-Objects nutzt. Egal auf welchem Wege ich das versuche, ich bekomme das nicht variabel gestaltet. Der erste Teil "set(newRec, raw(Uebersetzungsdatensatz.Anzeigename)" klappt, also ich kann die Felder dynamisch ansprechen, aber halt nicht dynmisch auf ein JSON-Object Child-Element zugreifen, mit einem Namen, der mir erst in der Abfrage bekannt wird.

Jemand eine goldene Idee hierzu?

1 Antwort

null
    • mirko3
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Hallo Daniel. Ich kenne den Aufbau deines JSON-Objekts nicht, deshalb mußt du am Script eventuell noch nacharbeiten. Versuche es mal so. Mirko

    let JSONObject := {
            Uebersetzungsdatensatz: {
                field1: 133,
                field2: 142
            }
        };
    let newRec := (create Tabelle_Datenimport);
    for key, value in JSONObject.Uebersetzungsdatensatz do
        set(newRec, key, value)
    end
    

Content aside

  • vor 3 TagenZuletzt aktiv
  • 1Antworten
  • 28Ansichten
  • 2 Folge bereits