1

Zugriff auf JSON Script mit Array über item Funktion?

Hallo,

ich taste mich mit ninox weiter voran, habe nun aber ein Problem mit einer API-Abfrage, bei der ich nicht weiterkomme. Ich habe auf einen Button das nachfolgende Script gelegt, welches auch grundsätzlich funktioniert (getestet in Postman). Die Rückmeldung, die über ein JSON-Objekt erfolgt, möchte ich nun in die Tabelle "Projektaufgaben" übernehmen. Für jeden Datensatz in dem Array soll ein neuer Datensatz in der Tabelle "Projektaufgaben" angelegt werden. Ich komme aber mit dem Zugriff auf die einzelnen Datensätze im Array nicht klar. Nach der Dokumentation müsste das ja über den Befehl item möglich sein. Was mache ich hier falsch?

 

let response := http("GET", url + PId, headers, body);
for item in response do
let new := (create Projektaufgaben);
new.(ProjektNummer := text(item(item.projectNumber, 0)));
new.('Beschreibung Teilaufgabe' := item(item.name, 0));
if response.error then
alert(text(response.error))
else
alert(text(response.result))
end
end
end

JSON-Rückmeldung auf Abfrage in Postman:

{
"result": [
{
"id": "122554",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685522,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Pressearbeit",
"positionNumber": 0,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
},
{
"id": "122555",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685522,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Consulting",
"positionNumber": 1,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
},
{
"id": "122556",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685523,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Vertriebsunterstützung",
"positionNumber": 2,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
},
{
"id": "122557",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685523,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Vertrieb",
"positionNumber": 3,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
}
]
}

3 Antworten

null
    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    findet er denn ITEM in response? oder liegen die Array-Items in response.result? Versuchs mal damit...  for item in response.result do

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja, result ist hier obligatorisch.

    ---

    let response := do as server 
    http("GET", url + PId, headers, body)
    end;
    if response.error then
    alert(text(response.error))
    else
    for i in response.result do
    let new := (create Projektaufgaben);
    new.(ProjektNummer := text(i.projectNumber);
    new.('Beschreibung Teilaufgabe' := i.name;
    end
    alert("Es wurden "+cnt(response.result)+" Projekte angelegt")
    end

    ---

    Leo

    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke für die Unterstützung!

    Ich habe es jetzt lösen können und das Script funktioniert. Problem war in der Tat der Response seitens der externen API. Nachdem ich den Response in ein ninox Feld geschrieben habe, ist mir das aufgefallen. 

Content aside

  • 1 „Gefällt mir“ Klicks
  • vor 3 JahrenZuletzt aktiv
  • 3Antworten
  • 669Ansichten