Neu Möglichkeit json mit DotLiquid zu parsen?

sjk

Sehr aktives Mitglied
16. Januar 2019
537
242
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
537
242
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
198
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.868
2.217
Berlin
Firma
css-umsetzung
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
198
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.868
2.217
Berlin
Firma
css-umsetzung
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.868
2.217
Berlin
Firma
css-umsetzung
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
198
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.792
541
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 Gibt es eine Möglichkeit Copilot Studio mit der JTL-Datenbank zu verbinden? User helfen Usern - Fragen zu JTL-Wawi 0
Neu PayPal Checkout Plugin (iPhone), Probleme mit PayPal-App Plugins für JTL-Shop 0
Neu Probleme beim Abgleich mit dem WooCommerce-Connector WooCommerce-Connector 0
Neu Zahlungszuordnung Wawi Auftrag mit Barzahlung im Laden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Download-Artikel mit dem Download-Modul anbieten JTL SHOP Plugins für JTL-Shop 5
Neu Magento2 mit Synesty in JTL-Wawi verbinden Allgemeines zu den JTL-Connectoren 9
Neu Bonuspunkte sammeln mit JTL-Pos Allgemeine Fragen zu JTL-POS 0
Neu Abgleich WooCommerce / JTL mit dem Connector – Fehlermeldung WooCommerce-Connector 0
QRCode mit eigenem Feld in Druckvorlage füttern. JTL-Wawi 1.9 1
Neu Kunden mit Kundenkonto bestellen als Gast und Aufträge sind dann nicht im Konto sichtbar Allgemeine Fragen zu JTL-Shop 4
Vorlage mit Bedingung JTL-Wawi 1.9 2
Neu Die folgenden Dateien sind nicht identisch mit den Dateien der aktuellen Version von JTL-Shop. Allgemeine Fragen zu JTL-Shop 0
Artikel mit zwei Positionen JTL-Wawi 1.10 1
Neu Shopify Verkaufskanal inaktiv nach Anbindung mit Shopify App Shopify-Connector 3
Wir haben Probleme beim Abgleich mit Amazon Amazon-Anbindung - Fehler und Bugs 41
Neu Kunden mit registrierten Konto im Shop exportieren User helfen Usern - Fragen zu JTL-Wawi 2
Neu Filter Kunde mit eigenem Feld Wert "größer als"? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Google Ads Conversion Tracking mit Consent Mode v2 Plugins für JTL-Shop 0
Neu Probleme mit der Email über jtl hosting (plesk) User helfen Usern 2
Neu Massenupdate Parentartikel mit AMZ Lister 2.0 Amazon-Lister - Ideen, Lob und Kritik 0
Konfigurationsartikel mit Stückliste versucht Gewinn JTL-Wawi 1.10 0
Neu Paypal Zahlung erfolgreich, Auftrag mit Status Neu im Shop und fehlt in WAWI JTL-Shop - Fehler und Bugs 4
Neu Teilweise Probleme mit Kindartikel anlegen User helfen Usern - Fragen zu JTL-Wawi 5
JTL Wawi: Kompatibel mit WPC Product Bundles for WooCommerce JTL-Wawi 1.9 0
Neu Mit Workflow verfügbaren Bestand aller Artikel in Datei schreiben User helfen Usern - Fragen zu JTL-Wawi 8
Beantwortet Einen 2. JTL-Shop5 mit dem gleichen PayPal-Account verbinden Einrichtung JTL-Shop5 7
Neu Gutschein verkaufen - Produkt mit Preiswahl durch Kunden? User helfen Usern - Fragen zu JTL-Wawi 6
Neu Probleme mit Etikettendrucker User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL mit Shopify für Etsy anstatt JTL mit Unicorn2 - hat das jemand gemacht? Anbindung, bestehende Artikel mappen? Multishop? Shopify-Connector 2
Neu Shopify Basic mit JTL? Wie einrichten? Ist der JTL Guide noch aktuelle wegen PII Einschränkung? Shopify-Connector 2
Neu Wann ist JTL WaWi / Connector mit Shopware 6.7 kompatibel? Shopware-Connector 6
Zahlungsmodul in Kombination mit der Deutschen Bank funktioniert nicht JTL-Wawi 1.10 3
Neu Rhewa 32 Waage mit JTL-WMS / JTL-Packtisch+ verbinden JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 2
Neu Shopabgleich mit Varianten scheitert Shopify-Connector 18
In Bearbeitung Kompakte Kasse gesucht mit der auch Kartenzahlung über 50 € funktioniert? JTL-POS - Fragen zu Hardware 4
In Diskussion Hilfe bei Verbindung von EC-Terminal (CCV A920) mit JTL-POS Allgemeine Fragen zu JTL-POS 3
API QueryItems mit Herstellern oder Kategorien bringt nichts JTL-Wawi 1.10 0
Neu JTL Shop 5: ein Kundenkonto in der WAWI mit mehreren Konten im Webshop Allgemeine Fragen zu JTL-Shop 7
Nach Update auf 1.10.13.2 Probleme mit der POS Kasse JTL-Wawi 1.10 7
Neu Fehler bei Abgleich mit Shopify Shopify-Connector 5
Neu Abgleich mit JTL-Wawi funktioniert nicht Allgemeine Fragen zu JTL-POS 0
Neu Ausliefern Workflow mit variablen Ausführungszeiten je nach vorauss. Lieferdatum User helfen Usern - Fragen zu JTL-Wawi 3
Neu seit 1.8.25 kein Aufschalten von Angeboten merh möglich mit 1.7.14.0 Amazon-Anbindung - Fehler und Bugs 10
Neu Kann nach Update auf 1.10 meine alten VCS-Lite Amazonrechnungen (noch erstellt mit 1.9.4.5.) nicht mehr drucken? Amazon-Anbindung - Fehler und Bugs 4
Neu BIO Zertifizierung - Kontrollstelle fordert jetzt eine Liste aller Artikel mit Sortierung Smalltalk 9
Neu Etsy mit Unicorn2 - quasi gestorben - keine Anpassung mehr, Token KEINESFALLS neu verknüpfen !!! Schnittstellen Import / Export 7
Artikel mit Freitext Variation - oder wie "kundenindividuelle Artikel" handhaben? JTL-Wawi 1.10 1
Neu Welcher Zahlungsanbieter mit JTL-POS Allgemeine Fragen zu JTL-POS 0
Neu CustomGPT - Workflows bzw. DotLiquid erstellen mit ChatGPT User helfen Usern 16
Kabelkonfektionierung mit JTL Konfigurator JTL-Wawi 1.10 0

Ähnliche Themen