Neu Möglichkeit json mit DotLiquid zu parsen?

sjk

Sehr aktives Mitglied
16. Januar 2019
503
223
Moin zusammen,

Wir würden gerne verschiedene APIs nutzen, um uns den Arbeitsalltag zu erleichtern. Dazu gehören z.B. die API unserer Hauptspedition, Export von Produktdaten in unser internes Wiki etc. Das funktioniert alles theoretisch auch super über die Webrequests der Workflows. Das Problem ist dann aber, die responses der Webrequests zu verarbeiten. Diese kämen bei den APIs, die wir im Auge haben immer als json zurück und wir müssten daraus z.B. die Angebots-ID, die wiki-Seiten-ID usw extrahieren können. Ohne diese Informationen kann die Wawi z.B. nur wiki-Seiten erstellen, nicht aber später updaten; Transporte buchen, aber nicht ein Angebot einholen und dann dieses Angebot buchen. Im Forum habe ich einige alte Beiträge gefunden, dass die Webrequests fast nicht zu gebrauchen sind wenn man die Antworten irgendwie verarbeiten muss.

Hat jemand einen Workaround, um gezielt Daten aus json-responses zu extrahieren? Am schönsten wäre natürlich eine Lösung wie hier beschrieben.
 

301Moved

Sehr aktives Mitglied
19. Juli 2013
930
188
Je nachdem, wie komplex das Antwort-json ist, könntest du es in ein Feld schreiben lassen und dieses Feld wiederum in Folge per Workflow verarbeiten lassen.
Hier war bspw. mal ein Ansatz etwas zu filtern: https://forum.jtl-software.de/threads/dotliquid-string-extrahieren.109952/
Wenn komplexer, wäre es auch möglich das json über Workflow in JQ ausführen zu lassen und das Ergebnis als CSV zu schreiben und per Ameise wieder reinzuholen.
Oder auf die REST API warten: https://forum.jtl-software.de/threads/rest-api-fuer-jtl-wawi-fuer-artikelanlage.144580/post-851029
 

sjk

Sehr aktives Mitglied
16. Januar 2019
503
223
Hi, ja, den den zuerst verlinkten Thread kenne ich. Dafür wäre das Antwort-json aber leider oft zu komplex bzw. so verschachtelt, dass der identifier an sich nicht mehr eindeutig ist. JQ ist ein wirklich guter Tipp, danke! Mal sehen, ob ich es damit umgesetzt bekomme oder ob ich doch noch weiter auf die REST API warten muss :)
 
  • Gefällt mir
Reaktionen: 301Moved

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
196
Hi, ja, den den zuerst verlinkten Thread kenne ich. Dafür wäre das Antwort-json aber leider oft zu komplex bzw. so verschachtelt, dass der identifier an sich nicht mehr eindeutig ist. JQ ist ein wirklich guter Tipp, danke! Mal sehen, ob ich es damit umgesetzt bekomme oder ob ich doch noch weiter auf die REST API warten muss :)
die REST API ist leider kaum zu gebrauchen. Deckt eigentlich kaum was ab.
Wie hattest du das mit dem Parsen gelöst? Wir haben bisher immer den Inhalt per RegEx rausgeholt aber das ist bestenfalls eine Bastellösung :D
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.558
2.093
Berlin
Das geht schon, aber man muss den umständlichen über MS SQL gehen, dann kannst du Daten die du per Request abfragst auch aus komplexen json Strukturen extrahieren.
 
  • Gefällt mir
Reaktionen: Powalowski

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
196
Das geht schon, aber man muss den umständlichen über MS SQL gehen, dann kannst du Daten die du per Request abfragst auch aus komplexen json Strukturen extrahieren.
An sich eine lustige Lösung. Mich stört eigentlich im Wesentlichen, dass man kaum Werte setzen kann und größere Veränderungen an z.B. Aufträgen nicht einfach über SQL gemacht werden sollten. JSON mit SQL-Queries zu parsen ist ja ein super witziger Workaround aber klingt ja wohl erstmal praktikabel und ohne externe Zusatztools.

https://n8n.io/ - Alleskleber für Schnittstellen, Requests und Daten aller Art. Man könnte sicher in vielen Fällen damit einen "Umweg" bauen und sich entsprechend die Daten sauber vorbereiten.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.558
2.093
Berlin
Ich sage es mal so, es stresst den SQL Server ja nicht wirklich und am Ende wird es ja auch in einem Workflow laufen und niemand muss sich beschweren das es lange dauern könnte, was es nicht ja auch nicht tut.

Ich habe hier mal ein einfaches Beispiel aus einem Projekt:

PHP:
{% capture json -%}
{
   "identificationprocess":{
      "status":"OK",
      "companyid":"musterfirma",
      "filename":"musterfile.zip",
      "processtype":"VIDEO"
   },
   "contactdata":{
      "mobilephone":"+497xxxxxxxxxx",
      "email":"max@musterdomain.de"
   },
   "userdata":{
      "firstname":{
         "status":"MATCH",
         "value":"Max"
      },
      "address":{
         "zipcode":{
            "status":"MATCH",
            "value":"10711"
         },
         "country":{
            "status":"MATCH",
            "value":"DE"
         },
         "city":{
            "status":"MATCH",
            "value":"BERLIN"
         },
         "street":{
            "status":"MATCH",
            "value":"Musterstraße 10"
         }
      },
      "birthplace":{
         "status":"MATCH",
         "value":"Berlin"
      },
      "nationality":{
         "status":"MATCH",
         "value":"DE"
      },
      "gender":{
         "status":"MATCH",
         "value":"MALE"
      },
      "lastname":{
         "status":"MATCH",
         "value":"Mustermann"
      }
   },
   "identificationdocument":{
      
   },
   "attachments":{
      "pdf":"muster.pdf",
      "xml":"muster.xml"
   }
}
{% endcapture -%}
\
{% assign key = 'identificationprocess.status' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ json |Replace:"result":"status" }}','$.{{ key }}') as out;
{% endcapture -%}
Status:                     {{ query |DirectQueryScalar }}
\
{% assign key = 'userdata.address.street.value' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ json |Replace:"result":"status" }}','$.{{ key }}') as out;
{% endcapture -%}
userdata.address.street:    {{ query |DirectQueryScalar }}
\
{% assign key = 'userdata.address.zipcode.value' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ json |Replace:"result":"status" }}','$.{{ key }}') as out;
{% endcapture -%}
userdata.address.zipcode:   {{ query |DirectQueryScalar }}
\
{% assign key = 'contactdata.mobilephone' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ json |Replace:"result":"status" }}','$.{{ key }}') as out;
{% endcapture -%}
\
{% assign key = 'contactdata.email' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ json |Replace:"result":"status" }}','$.{{ key }}') as out;
{% endcapture -%}
contactdata.email:          {{ query |DirectQueryScalar }}
\
{% assign key = 'userdata.address.city.value' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ json |Replace:"result":"status" }}','$.{{ key }}') as out;
{% endcapture -%}
userdata.address.city:      {{ query |DirectQueryScalar }}
\
{% assign key = 'attachments.pdf' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ json |Replace:"result":"status" }}','$.{{ key }}') as out;
{% endcapture -%}
attachments.pdf:            {{ query |DirectQueryScalar }}
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.558
2.093
Berlin
Naja das wäre ja übel wenn ich es erst in der Datenbank speichern müsste um dann damit arbeiten zu können :D
Ich hab da damals echt lange dran getüftelt bis ich den (in der JTL Welt) besten Weg gefunden habe.
 
  • Gefällt mir
Reaktionen: Powalowski

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
196
Naja das wäre ja übel wenn ich es erst in der Datenbank speichern müsste um dann damit arbeiten zu können :D
Ich hab da damals echt lange dran getüftelt bis ich den (in der JTL Welt) besten Weg gefunden habe.
Das ist wirklich ein schöner Weg. Bestätigt und Zertifiziert 👍🏻
Gerade mal in der REST Doku gestöbert, da sind ja doch einige nützliche Punkte dazugekommen - vielleicht starten wir da mal mit der Nutzung.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.733
523
Das geht schon, aber man muss den umständlichen über MS SQL gehen, dann kannst du Daten die du per Request abfragst auch aus komplexen json Strukturen extrahieren.

An sich eine lustige Lösung. Mich stört eigentlich im Wesentlichen, dass man kaum Werte setzen kann und größere Veränderungen an z.B. Aufträgen nicht einfach über SQL gemacht werden sollten. JSON mit SQL-Queries zu parsen ist ja ein super witziger Workaround aber klingt ja wohl erstmal praktikabel und ohne externe Zusatztools.

Ich bin ja ein Freund davon, Dinge vom SQL-Server machen zu lassen.

Meiner Meinung nach ist Liquid für komplexere Anforderungen ungeeignet. Damit will ich nicht sagen, dass Liquid schlecht wäre, sondern: Liquid ist was es ist: eine Template Sprache. Dafür da, um in dynamischen Berichten Werte aus der Datenbank anzuzeigen. Es gibt zwar ein paar einfache Filter und auch bestimmte Kontrollstrukturen, aber auch viele Stolpersteine.
 
  • Gefällt mir
Reaktionen: Powalowski
Ähnliche Themen
Titel Forum Antworten Datum
Neu Epson TSE Anbindung mit Fehlern. Einrichtung / Updates von JTL-POS 1
Neu Zugriff via wireguard VPN mit FritzBox Installation von JTL-Wawi 4
Neu Formulare nach Kundengruppen mit und ohne Rabattsätze Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Bin ich der einzige, der Amazons VCS benutzt (nicht Lite) und mit der neuen JTL-Version 1.10.10.3 akute Probleme hat? Amazon-Anbindung - Fehler und Bugs 0
Bestellungen mit PP ApplePay und GooglePay werden ohne Zahlungsart übermittelt JTL-Wawi 1.10 3
Nach Update von 1.9.4.5 auf 1.10.10.3: Probleme mit Datenbank login JTL-Wawi 1.10 1
Neu Ist es möglich auf dem Bon Positionszeilen mit Betrag "0,00" nicht zu drucken? Allgemeine Fragen zu JTL-POS 2
Neu Produktdatenmanager:in mit JTL-Erfahrung gesucht (Festanstellung, Raum Bielefeld) Dienstleistung, Jobs und Ähnliches 3
Neu 404-Fehler bei SEO-URLs mit Schrägstrich (/) - trotz Update auf 5.4.1 JTL-Shop - Fehler und Bugs 5
Neu Erfahrung mit dem Anbieter eBakery - kein JTL-Servicepartner mehr! Dienstleistung, Jobs und Ähnliches 43
Neu Ausliefern und Dokumente drucken nur mit WMS Mobile? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Welchen Shopify Plan brauche ich um Kundendaten mit JTL abzugleichen? Shopify-Connector 0
VCS-Lite Abgleich mit Amazon funktioniert seit 1.10.10.3 nicht mehr und zerstört so die Rate gültiger Sendungsverfolgungsnummern Amazon-Anbindung - Fehler und Bugs 19
Merkmale mit der Ameise importieren mehr als 10 JTL-Wawi 1.9 1
Hinweis zum Update mit Unicorn 2 JTL-Wawi 1.10 0
Neu Attribute/Merkmale mit eigenen Feldern verknüpfen User helfen Usern - Fragen zu JTL-Wawi 4
Neu Variationsartikel zeigt Varianten mit + x,00 € an Allgemeine Fragen zu JTL-Shop 2
Neu DPD Retourenetikett mit 0 kg Gewicht Eigene Übersichten in der JTL-Wawi 2
Neu Preisauszeichnung Artikeletikett mit QR-Code Link zum Produkt User helfen Usern - Fragen zu JTL-Wawi 5
Neu Struggling mit SCSS und CSS und Kompilieren Templates für JTL-Shop 3
Nach Shopabgleich wird der Auftrag in Wawi immer mit Versandart "Abholung" gesetzt JTL-Wawi 1.9 0
Neu DHL Label erstellen Fehler "Die HTTP-Anforderung wurde mit Clientauthentifizierungsschema "Anonymous" nicht zugelassen." JTL-ShippingLabels - Fehler und Bugs 23
Amazon Bestellungen mit Versandentgelt kaufen im Seller Central automatisch in der Wawi abschließen JTL-Wawi 1.9 0
In Diskussion Workflow: Prüfen ob Artikel mit Fehlbestend nach 48h im Zulauf JTL-Workflows - Ideen, Lob und Kritik 2
Neu Probleme mit Klarna-Cookies Plugins für JTL-Shop 0
Neu Amazon SCX - warum doppelte Einträge in SCX.tCategoryAttribute mit unterschiedlicher nSectionPosition? Schnittstellen Import / Export 0
Neu Übermittlung von Transparency-Seriennummern an Amazon mit JTL-Wawi Amazon-Anbindung - Ideen, Lob und Kritik 1
Fehler beim Abgleich mit Shopify – „Unknown column 'sort'“ & Bildlöschung blockiert Worker Shopify-Connector 1
Neu Restlängen im Shop anzeigen mit Variante Allgemeine Fragen zu JTL-Shop 1
Neu Wechsel von JTL Shop 5 zu Shopware 6 – Wer hat Erfahrung mit kompletter Datenmigration (Kundenlogins, Bestellungen, Gutscheine etc.)? Shopware-Connector 3
Worker und PC mit Microsoft-Account JTL-Wawi 1.9 3
Neu Welche Bank ist 100 % kompatibel mit JTL Zahlungsmodul? Schnittstellen Import / Export 0
Automatische Lagerbuchung mit verschiedenen Barcodes für ein und dasselbe Produkt JTL-Wawi 1.9 2
Neu Shopify FE im Vergleich mit JTL Shop Allgemeine Fragen zu JTL-Shop 0
Neu Amazon Prime durch Verkäufer mit JTL-Wawi verknüpfen Amazon-Anbindung - Fehler und Bugs 1
Neu Problem mit einer VCS lite-Rechnung Amazon-Anbindung - Fehler und Bugs 1
Einen Artikel nur Teilweise gutschreiben, dabei mit Versandkosten verrechnen JTL-Wawi 1.7 0
Kundenkategorien ändern mit Ameise JTL-Wawi 1.9 3
Neu Gastkunde registriert sich bei zweiter Bestellung - und die Wawi bekommt es nicht mit! Shopware-Connector 0
Neu FEHLER mit JTL Shipping und DHL - Empfängerunterschrift wird nicht gebucht JTL-ShippingLabels - Fehler und Bugs 4
Beantwortet Bei "Paket hinzufügen" sofortiger Labeldruck mit neuer Sendungsnummer Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Benutzer Rechte - Versand Mitarbeiter soll Menge von Freipositionen mit der Lieferscheinerstellung ändern dürfen Arbeitsabläufe in JTL-Wawi 4
Chatbot mit JTL verwenden JTL-Wawi 1.9 3
Keine Verbindung Mit JTL Shop 5 obwohl sync PW und Sync Benutzer in php identisch mit Wawi Einrichtung JTL-Shop5 5
Neu Übernahme JTL Wawi mit Onlineshop und JTL-POS Starten mit JTL: Projektabwicklung & Migration 3
Neu Problem mit der Anleitung bei der Vergabe der Rechte. Installation / Updates von JTL-Shop 2
Rechnungen an ausländischen Lieferanten werden mit 19 % Mwst erstellt JTL-Wawi 1.9 5
Neu Probleme mit Klarna und PayPal Plugins für JTL-Shop 0
Neu ++ Ebay Artikel mit Menge 1 und versch. Variationen ++ Arbeitsabläufe in JTL-Wawi 0
Neu Einrichtung von Versandarten in JTL-Shop und Verknüpfung mit JTL-Wawi Installation / Updates von JTL-Shop 12

Ähnliche Themen