Neu Möglichkeit json mit DotLiquid zu parsen?

sjk

Sehr aktives Mitglied
16. Januar 2019
576
261
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
576
261
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
8.246
2.451
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
8.246
2.451
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
8.246
2.451
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.851
556
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 Vorsicht - eComData "Upgrades" ab 01.04.2026 mit gleichzeitigem Paketwechsel verursacht teilweise 100% mehr Kosten! Smalltalk 6
Verkauf: Positionsname mit Hersteller möglich? JTL-Wawi 1.11 9
Neu Beim Versuch Paypal-Plugin mit Paypal-Konto zu verbinden Shop nicht mehr erreichbar Plugins für JTL-Shop 2
Neu Neues Plugin: Produktbundles mit Rabatten Plugins für JTL-Shop 0
Neu Für die Weiterentwicklung und Betreuung unserer bestehenden Systemlandschaft suchen wir einen erfahrenen Freelancer (m/w/d) mit fundierten Kenntnissen JTL-Wawi App 1
Update von 1.11.6 auf 1.11.7: JTL Worker verbindet nicht mehr mit Datenbank (WaWi schon) JTL-Wawi 1.11 1
Neu Repricer Erfahrungen mit JTL gesucht User helfen Usern - Fragen zu JTL-Wawi 0
Neu Checkout Probleme mit Pflichtfeldangaben Allgemeine Fragen zu JTL-Shop 4
Neu OSS aktiv – Ausnahme für Eventtickets mit deutschem Leistungsort möglich? Allgemeine Fragen zu JTL-Shop 6
Neu Zusatzartikel, Stückliste, Variation den Kunden direkt mit anbieten (Shop/Ebay) User helfen Usern - Fragen zu JTL-Wawi 5
Neu Kundenkonto mit UID und Bestellung als Gast JTL-Shop - Fehler und Bugs 14
Neu Sprachvariablen Textbausteine mit "." im Namen lassen sich nicht ändern JTL-Shop - Fehler und Bugs 2
Neu 12.400 Versandumschläge B4 / 6.400 Braun und 6.000 Weiß mit Faltböden / Klappböden Dienstleistung, Jobs und Ähnliches 3
Neu Kann man mit JTL Gebrauchtware verkaufen? User helfen Usern - Fragen zu JTL-Wawi 8
Neu Synchronisation mit Shop mit Fehlern beendet Onlineshop-Anbindung 17
Neu Mehrere Kartons in einem Auftrag mit nur einem DHL-Label Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 12
Neu Kunde zahlt zuviel mit PayPal Plugins für JTL-Shop 0
Neu Wawi Synchronisation mit JTL Shop nicht möglich! seit 3 Stunden was kann man machen? Onlineshop-Anbindung 1
Neu Export Kundendaten mit Label in WAWI 1.9.6.5 JTL Ameise - Eigene Exporte 1
Neu Ebay Artikel mit Fehlern / Export eBay-Anbindung - Ideen, Lob und Kritik 3
Neu Newsletter Anmeldung speichert Namen mit HTML-Entities JTL-Shop - Fehler und Bugs 1
Neu Fehler mit der Kartenzahlung Einrichtung / Updates von JTL-POS 9
Rechnung mit oder ohne ZUGFeRD XML speichern JTL-Wawi 1.11 4
Neu WMS Mobile / kein QR Code Scan in das Passwort Feld mit Zebra MDE JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Inaktive Amazon Angebote mit Fehlern - Preisfehler, GPSR usw. Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Samsung TAB A7 + Swissbit TSE USB-Stick mit JSAUX Adapter OTG Typ C auf USB JTL-POS - Fragen zu Hardware 1
Neu Probleme mit Cache Einstellungen / HTTP 500 - memory limit exceeded JTL-Shop - Fehler und Bugs 9
Neu Kassenbon mit Rabatt Angabe Allgemeine Fragen zu JTL-POS 1
Artikel mit Bestand 0 ausblenden JTL-Wawi 1.9 5
Neu Übertragung an DATEV mit Besonderheit der Kasse (LS-POS) User helfen Usern - Fragen zu JTL-Wawi 0
Artikel mit Bestand einen Einkaufstop setzen JTL-Wawi 1.11 3
Neu Wechsel von JTL Shop 5 zu Shopify / ERP-Connector Produkte mit Variationen werden nicht übertragen Shopify-Connector 1
Artikel Z besteht aus den Positionen A, B und C mit unterschiedlichen Steuersätzen. Wie im Angebot, Auftrag, Rechnung richtig dargestellen ? JTL-Wawi 1.11 4
Neu Erfahrungen mit automatischen Etikettiersystemen & JTL-Integration Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Erfahrungen mit JTL-Wawi 1.10.15.0 im Produktivbetrieb? JTL-Wawi 1.10 7
Neu Lieferschein entweder mit Stücklistenkomponente oder aber mit normalem Artikel ausgeben. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Rabatt auf Zahlungsart wird bei Lieferung ins EU-Ausland mit falscher MwSt berechnet? Betrieb / Pflege von JTL-Shop 0
Neu Bedarfssprognose - Einmalige Bestellung mit großer Stückzahl nicht zu berücksichtigen User helfen Usern - Fragen zu JTL-Wawi 0
Defekte Retouren mit Grund des Defektes erfassen JTL-Wawi 1.11 1
Neu Für jeden Artikel Bild1 löschen mit der Ameise JTL-Ameise - Ideen, Lob und Kritik 3
Neu Sitemap per cronjob und nicht mit Wawi Abgleich Allgemeine Fragen zu JTL-Shop 3
Neu Mit Ameise nur einen Artikel & die dazu gehörenden Varianten exportieren - wie? Schnittstellen Import / Export 3
Neu JTL-Wawi 1.11.5: Sequenzieller Kundenexport mit Workflow und SQL-Queue Schnittstellen Import / Export 2
Neu Rechnung mit Lastschift Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 5
Neu JTL POS mit Stadtgutscheinen Allgemeine Fragen zu JTL-POS 0
Neu eBay Angebotsimport : Fehler bei der Kommunikation mit dem eA-Server eBay-Anbindung - Fehler und Bugs 0
S/MIME mit veraltetem Standard? JTL-Wawi 1.11 2
Neu JTL Wawi auf Windows Server 2025 mit SQL 2025? Installation von JTL-Wawi 21
Seit Update auf 1.11.4 Workflow für Kartonauswahl gibt error JTL Das Objekt mit Nullwert muss einen Wert haben. BrowsePk: 152325 WorkflowAktionId: 155 JTL-Wawi 1.11 1
Neu Ich möchte konfigurieren, dass Artikel mit einem Lagerbestand von 0 nicht mehr zu einer Bestellung hinzugefügt werden dürfen Eigene Übersichten in der JTL-Wawi 1

Ähnliche Themen