0

function parameter type json

Hallo in die Runde,

 

ist es möglich den type von einem JSON als Parameter Type einer Funktion zu verwenden?

let tempJson := {
    rowId: "",
    label: "",
    labelFieldId: "",
    formulaFieldId: "",
    formula: ""
};
let t := typeof(tempJson);
function test(param1: tempJson) do
    param1.rowId;
end
test(tempJson);

 

 

Ich habe jetzt sowas in der Art getestet, aber scheint nicht zu funktionieren. Auch nicht wenn ich "t" als type von param1 verwende.

4 Antworten

null
    • mirko3
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Hi. Versuche es mal so. Mirko

    let tempJson := {
            rowId: "9",
            label: "",
            labelFieldId: "",
            formulaFieldId: "",
            formula: ""
        };
    function test(param1 : any) do
        param1.rowId
    end;
    test(tempJson)
    
      • Can_Pekesen
      • vor 3 Tagen
      • Gemeldet - anzeigen

       Hi Mirko. Das funktioniert mit "any" natürlich gut. Ist aber nicht mehr typisiert :)

      Ich möchte natürlich einen Fehler geworfen bekommen, wenn der Typ des Arguments für die Funktion "test" falsch ist. Auch habe ich dann innerhalb der Funktion "test" keine Sicherheit mehr, dass bspw. "rowId" als Attribut von "param1" wirklich existiert.

      • mirko3
      • vor 3 Tagen
      • Gemeldet - anzeigen

       In Ninox ist das JSON als "text" und die Objekte als "any" typisiert. Wenn es Dir also mehr um die Überprüfung geht, dass ein korrektes JSON (Typ "text") in die Funktion eingegeben wird, dann könntes Du behelfsweise einen Errorhandler in die Funktion einbauen. Das sieht dann z.B. so aus:

      let tempJson := formatJSON({
              rowId: "9",
              label: "",
              labelFieldId: "",
              formulaFieldId: "",
              formula: ""
          });
      function test(param1 : text) do
          if parseJSON(param1) = null then
              parseJSON(formatJSON("error"))
          else
              parseJSON(param1).rowId
          end
      end;
      test(tempJson);
      test("Text")
      

      Mirko

    • UweG
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Man kann in einer Funktion den Parametertyp nicht über eine Variable steuern.
    Das muss hardcoded sein.

Content aside

  • vor 3 TagenZuletzt aktiv
  • 4Antworten
  • 29Ansichten
  • 3 Folge bereits