Neu Möglichkeit json mit DotLiquid zu parsen?

sjk

Sehr aktives Mitglied
16. Januar 2019
464
203
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
464
203
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
174
195
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.252
1.977
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
174
195
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.252
1.977
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.252
1.977
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
174
195
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.654
500
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 Möglichkeit Variablen in Html in Eigene > Inhalte > Seiten auszugeben Allgemeine Fragen zu JTL-Shop 4
Möglichkeit zur einfachen Hinzufügung von Mediendateien JTL-Wawi 1.7 0
Neu Möglichkeit zur Selbstabmeldung bei Arbeitsplatzwechsel JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 1
Neu Dropshipping Einstellungen in Wawi mit Händler, aber Versand geht von uns aus???? User helfen Usern - Fragen zu JTL-Wawi 2
Blindkopie Mails kommen mit 1.9.6.5 nicht mehr an! JTL-Wawi 1.9 8
Neue dritte Sprache (französisch) wird nicht mit Shop (Connector) synchronisiert JTL-Wawi 1.9 1
Neu Umzug von SQL 2016 Express auf SQL 2019 Standard mit Wawi 1.8.12.2 Installation von JTL-Wawi 8
Neu Rechnungsvorlagen 2.0 - Skontoberechnung auf den neuen Vorlagen (Formel) - Rechnen mit DotLiquid Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 5
Neu Datenbank voll. dbo.tFile mit 3.5 GB und dbo.tLizenzlog mit 1GB JTL-Wawi - Fehler und Bugs 5
GPRS nur mit Shopify JTL-Wawi 1.9 4
Neu Mehrere Bescheibungen über Workflows o.ä. mit KI optimieren Arbeitsabläufe in JTL-Wawi 0
Neu Dropshipping mit Seriennummern User helfen Usern - Fragen zu JTL-Wawi 0
Neu Probleme mit paypal / ZAhlung als nicht autorisiert zurückgewiesen JTL-Shop - Fehler und Bugs 6
Fehler [DbeSClient]JTL-Wawi beim Abgleich mit JTL Shop5 JTL-Wawi 1.9 0
Neu Klarna Plugin mit JTL Shop 5.4.0 lässt Pay Now nicht zu Plugins für JTL-Shop 9
Neu Selbst gestaltete Versandlabels (z.B. mit Internetmarke über ShippingLabels) automatisch drucken? Wie macht Ihr das mit der Ausgabe? Arbeitsabläufe in JTL-Wawi 0
Neu Probleme mit Layout Shop 5 Technische Fragen zu Plugins und Templates 4
Neu Connector macht Probleme mit AST_Pro WooCommerce-Connector 0
JTL, Dringende Klärung zu GPSR-Anforderungen – Probleme mit JTL-Updates JTL-Wawi 1.9 67
Neu Neue Artikel mit Ameise und EAN aus JTL JTL-Workflows - Ideen, Lob und Kritik 1
Neu GPSR mit JTL Wawi + Plugin JTL-Wawi - Fehler und Bugs 5
Neu Fehler beim Abgleich mit Amazon durch Worker. Amazon-Anbindung - Fehler und Bugs 0
Beantwortet Worker macht keinen Abgleich mit Woocommerce WooCommerce-Connector 0
Neu Auftragsnummer auf WMS Pickliste mit mehreren Aufträgen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu wie kann ich wareneingang mit artikel karton einbuchen User helfen Usern - Fragen zu JTL-Wawi 3
Neu Ab Preise Darstellung als netto bei Kunden mit UID Allgemeine Fragen zu JTL-Shop 5
Neu Gezielt Aufträge mit Kundennummern / Lieferadressen zurückhalten User helfen Usern - Fragen zu JTL-Wawi 5
Neu Rechnungskauf mit Ratepay wird falsch gemappt Plugins für JTL-Shop 1
Neu Auslaufartikel mit Bestand nicht deaktivieren JTL-Ameise - Fehler und Bugs 1
Neu Retoure erstellen nach 1 Woche in Wawi mit Sumup als Zahlungsanbieter Allgemeine Fragen zu JTL-POS 2
Welche GPSR Plugin-Einstellungen mit WaWi 1.9.6.1 JTL-Wawi 1.9 8
Probleme beim Export mit der Ameise JTL-Wawi 1.7 1
Neu Artikelimport bricht mit Fehlermeldung ab JTL-Ameise - Fehler und Bugs 8
Neu LS-POS mit COM-Port in RDP Sitzung langsam Fragen rund um LS-POS 0
Verwiesen an Support WAWi Workflows mit Zahlungen als Bedingung funktioniert nicht JTL-Workflows - Fehler und Bugs 2
Neu Verdandliste Pro Paket das Gewicht mit ausgeben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Paternoster Umlaufregal mit JTL Wawi möglich? JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 0
Neu Aufträge mit nicht verfügbaren Artikeln automatisch zurückhalten User helfen Usern - Fragen zu JTL-Wawi 2
Neu WooCommerce Connector Problem mit nachträglich abgebrochenen Bestellungen Onlineshop-Anbindung 0
Neu Überverkäufe mit Kindartikeln - wie richtig einstellen ? User helfen Usern - Fragen zu JTL-Wawi 23
Neu Problem mit Variationen-Artikeln JTL-Shop - Fehler und Bugs 2
Neu WMS - Nachträglicher Labeldruck mit Adressänderung Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Connector Verhalten mit Tracking Nummern und Versandbestätigungen Shopify-Connector 1
Neu OTTO-Marketplace Versand NICHT mit DHL möglich? Smalltalk 4
Neu Frage an die (Hobby-) Controller: B2C Einzelhandel mit 6% Marketingbudget - das ist normal? Business Jungle 7
Neu Probeme WaWi mit POS verbinden - failed to connect - server IP 127.0.0.1 Einrichtung / Updates von JTL-POS 2
Neu Immense Probleme mit dem Aufschalten neuer Produkte Amazon-Anbindung - Fehler und Bugs 0
Neu Aufträge mit falsche Steuerart angelegt User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wawi Auftrag in JTL POS öffnen (problem mit Kartenzahlung) Allgemeine Fragen zu JTL-POS 1
Neu Wie erstelle ich Bundles mit JTL Wawi? User helfen Usern 1

Ähnliche Themen