0

Dynamisches JSON-Objekt mit mehreren Keys in Array umwandeln

Hallo zusammen,

ich stehe vor folgendem Problem und hoffe, ihr habt eine Idee. Ich habe in einem Textfeld eine JSON-Struktur mit dynamischen Keys wie folgt:

"types": {
  "A": {
    "nextFieldId": 16,
    "caption": "Kurse"
  },
  "B": {
    "nextFieldId": 22,
    "caption": "Module"
  }
  // ... beliebig viele weitere
}

 

 

ich möchte das gerne in folgendes Format umwandeln und zwar innerhalb von ninox:

"types": [
  {
    "table": {
      "tabId": "A",
      "nextFieldId": 16,
      "caption": "Kurse"
    }
  },
  {
    "table": {
      "tabId": "B",
      "nextFieldId": 22,
      "caption": "Module"
    }
  }
]

 

 

Ich habe mit  extractx() und replacex() gearbeitet, bin aber an den dynamischen Keys gescheitert, weil ich sie in Ninox nicht direkt iteriern kann. 

Gibt es eine Möglichkeit, wie man die Keys (A,B..etc) aus einem JSON-Text extrahieren kann und die Einträge reinkombinieren kann sodass am Ende eine JSON-Array entsteht, wie oben gezeigt?

Danke euch!

1 Antwort

null
    • mirko3
    • vor 4 Tagen
    • Gemeldet - anzeigen

    Hi. Mal sehen, ob dir das weiterhilft. Das JSON im Textfeld sollte im richtigen Format stehen also  {"types": ...}. Dann könnte folgender Code ausreichen.

    let originJSON := parseJSON(textfield);
    let value := for key, value in originJSON.types do
            value
        end;
    let key := for key, value in originJSON.types do
            key
        end;
    let result := for i in range(cnt(value)) do
            let obj := item(value, i);
            setItem(item(value, i), "tableId", item(key, i));
            {
                table: obj
            }
        end;
    {
        types: result
    }
    

    "textfield" ist der Name deines Textfeldes. Leider steht der key tableId jetzt am Schluß. Mirko