0

Noch ein Problem mit Json

Hallo ich komme noch an einer Stelle nicht weiter mit dem Json. Wenn ich ein Produkt aktualisiere möchte ich src:Links in URL-Felder übernehmen, wenn ich mit dem Button betätige. Leider funktioniert es nur so das er das erste url übernimmt. Ich weiß nicht wie ich den Array unterbreche. Ich glaube ich muss entweder mit item arbeiten, aber wie geht es? kann mir einer Helfen.

Mein Code:

let me := this;
let response := do as server
        http("GET", "https://www.sonneamwerk.de/wp-json/wc/v3/products/" + ID + "?" +
        "&consumer_key=???&consumer_secret=???", {
            'Content-Type': "application/json"
        }, {
            id: ID,
            type: type,
            sku: Artikelnummer,
            name: Produktname,
            regular_price: Preis,
            status: status,
            description: Beschreibung
        })
    end;
if response.error then
    alert(text(response.error))
else
    'Import Text' := formatJSON(response.result);
ID := response.result.id;
    Artikelnummer := response.result.sku;
    'Produkttyp im SHOP' := response.result.type;
    'Produktstatus im SHOP' := response.result.status;
    Preis := response.result.price;
Produktname := response.result.name;
    Beschreibung := response.result.description;
    URL := response.result.permalink;
    Kategorie := response.result.text(categories)
end;
for i in response.result.images do
    'URL 2' := first(i.src);
    'URL 5' := last(i.src)
end

Json-resultat:

"images":            
        [

    {"id":4345,
    "date_created":"2021-11-28T09:59:33",
    "date_created_gmt":"2021-11-28T09:59:33",
    "date_modified":"2021-12-29T00:18:06",
    "date_modified_gmt":"2021-12-29T00:18:06",
    "src":"https://www.sonneamwerk.de/wp-content/uploads/2021/11/Kalender-Bild1-e1640737367639.png",
    "name":"Wandkalender-Dein-Reich-komme",
    "alt":"Wandkalender \"Dein Reich komme!\""},

{"id":3543,
    "date_created":"2021-11-01T13:59:29",
    "date_created_gmt":"2021-11-01T13:59:29",
    "date_modified":"2021-11-01T13:59:29",
    "date_modified_gmt":"2021-11-01T13:59:29",
    "src":"https://www.sonneamwerk.de/wp-content/uploads/2021/11/Kalender-Bild2.jpg",
    "name":"Mockups Design","alt":""},

{"id":3544,
    "date_created":"2021-11-01T13:59:36",
    "date_created_gmt":"2021-11-01T13:59:36",
    "date_modified":"2021-11-01T13:59:36",
    "date_modified_gmt":"2021-11-01T13:59:36",
    "src":"https://www.sonneamwerk.de/wp-content/uploads/2021/11/Kalender-Bild3.jpg",
    "name":"Mockups Design","alt":""},

{"id":3545,
    "date_created":"2021-11-01T13:59:43",
    "date_created_gmt":"2021-11-01T13:59:43",
    "date_modified":"2021-11-01T13:59:43",
    "date_modified_gmt":"2021-11-01T13:59:43",
    "src":"https://www.sonneamwerk.de/wp-content/uploads/2021/11/Kalender-Bild4.jpg",
    "name":"Mockups Design","alt":""},

],

2 Antworten

null
    • T_Bartzsch
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Der Ansatz ist ja schon richtig.... nur, was du in deinem Script machst ist falsch. Für jedes Objekt "i" in "images" - also jeden einzelnen Block in geschweiften Klammern { } lässt Du 'URL 2' den 1. src sein, und 'URL 5' den letzten "src" ... es gibt aber für jedes "i" nur EINEN src...

    Dazu wirst du mit festen URL Feldern so nicht weiterkommen, weil Du ja in einer Schleife das URL-Feld dynamisch ansprechen müsstest ... also im ersten i -> URL1, im zweiten i -> URL 2 ... usw. 

    Wenn Du aber weißt, Du hast zB immer maximal 5 Bilder pro Artikel, dann könntest Du statt mit einer for-Schleife einfach 5x via item() durch das Array gehen und jedes item einem festen URL Feld zuweisen...

    'URL 1' := item(response.result.images, 0).src;

    'URL 2' := item(response.result.images, 1).src 

    usw.... das könnte man noch mit einer if-Abfrage verfeinern...


    Oder du iterierst durch die Bilder und legst Dir in einer Untertabelle für jedes "i" einen Datensatz an mit der URL

    for i in response.result.images do

    i.(
    let me :=this;
    let newEntry := (create UNTERTABELLE);
    newEntry.(URL := src);
    newEntry.(DEINEOBERTABELLE := me)
    )
    end

      • chalvi // WERBEAGENTUR GbR
      • VS2021
      • vor 9 Monaten
      • Gemeldet - anzeigen

      Vielen Dank für deinen ausführlichen Tipp. Es hat wie immer sehr gut funktioniert. 

Content aside

  • Status Answered
  • vor 9 MonatenZuletzt aktiv
  • 2Antworten
  • 73Ansichten
  • 2 Folge bereits