JSON an Ninox-API übergeben
Hallo zusammen,
habe folgendes Problem:
Per API soll ein JSON-Array an Ninox übergeben werden, darin sind Anweisung zum aktualisieren von Datensätzen.
curl
-H 'Content-Type: application/json'
-d '{"query": "TicketUpdate(formatJSON(
[
{"id":"B123","firstname":"Max7","name":"Muster"},
{"id":"B124","firstname":"Max8","name":"Muster"}
]
))"}'
Die Rückmeldung lautet
"message": "Internal Server Error"
Wie kann ich den Funktionsaufruf und das Array korrekt übergeben?
Grundsätzlich funktioniert der API-Aufruf, ein Query zu einer Funktion die kein Array als Daten empfängt, funktioniert.
So sieht die Globale Funktion aus:
function TicketUpdate(vArray : text) do
let xArray := parseJSON(vArray);
item(xArray, 0).id;
for i in range(0, cnt(xArray)) do
let vUpdate := first(select Tickets where Nr = item(xArray, i).id);
vUpdate.(Vorname := item(xArray, i).firstname);
vUpdate.(Name := item(xArray, i).name)
end;
for i in range(0, cnt(xArray)) do
let vUpdate := first(select Tickets where Nr = item(xArray, i).id);
{
ID: vUpdate.Nr,
Vorname: vUpdate.Vorname,
Name: vUpdate.Name
}
end;
Danke schonmal :-)
3 Antworten
-
Hallo Daniel,
das Problem liegt hierbei bei den " Zeichen innerhalb des übergebenen Textes, da diese ja in Ninox das Text-Format deklarieren.
Ich habe leider selber keine saubere Lösung dafür, aber löse es im Moment so, dass ich mit einer replace-Funktion im Übergabeparameter " durch \" ersetze. Aufpassen, wenn bei dein Inputdaten bereits \" enthalten ist, dann muss das noch etwas erweitert werden.
Wäre selber dankbar, wenn hier noch wer eine bessere Variante hat.
Noch ein kleiner Tip: Du kannst die Input-Variable in Ninox mit 'any' deklarieren (vArray : any), dann kannst du direkt ein JSON übergeben und sparst dir 'formatJSON' / 'parseJSON'
-
Nach vielen Stunden sind wir jetzt einen Schritt weiter. Die Übergabe funktioniert, wenn das JSON als url-encoded String übergeben wird.
Dabei tritt aber nun das Problem auf, dass Leerzeichen durch + ersetzt werden. D.h. eine Adresse kommt bspw. statt "Musterstraße 25" als "Musterstraße+25" an.
Content aside
- vor 2 JahrenZuletzt aktiv
- 3Antworten
- 149Ansichten
-
3
Folge bereits