Neu Möglichkeit json mit DotLiquid zu parsen?

sjk

Sehr aktives Mitglied
16. Januar 2019
600
269
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
600
269
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.433
2.569
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.433
2.569
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.433
2.569
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.852
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
Ameise-Export: Umsatzsteuer stimmt nicht mit Differenz aus Netto und Brutto überein (insbesondere bei mehreren Steuersätzen) JTL-Wawi 1.11 0
Neu Klarna konnte mit den angegebenen Daten keine Sitzung erstellen. Einige Feldbedingungen wurden verletzt. Betrieb / Pflege von JTL-Shop 0
Neu Funktioniert Shop 5.7 mit MariaDB 10.5.29? Installation / Updates von JTL-Shop 1
Sanktionsprüfung mit JTL JTL-Wawi 1.10 0
Versandart Standartpaketversand mit Express JTL-Wawi 1.10 2
Artikeletiketten mit Angabe des Herstellers+Adresse JTL-Wawi 1.10 1
Neu Versandkostenersparnis mit JTL-Shipping: Vergünstigte Versandlabels ohne individuelle Rahmenverträge mit Versanddienstleistern User helfen Usern - Fragen zu JTL-Wawi 0
Probleme mit Worker und JTL-App JTL-Wawi 2.0 2
Neu Probleme mit Import Datenbank vom Server auf lokal JTL-Wawi 2.0 User helfen Usern - Fragen zu JTL-Wawi 4
Neu Angeblich noch keine Verknüpfung mit DPD Meta ??? JTL-ShippingLabels - Fehler und Bugs 1
Neu fEKNetto - zwei Einträge je LiefArtikel mit gleichem Lieferant - nur einer aktualisiert User helfen Usern - Fragen zu JTL-Wawi 1
Neu JTL-Verknüpfung mit EC-Gerät fehlerhaft JTL-POS - Fehler und Bugs 0
Neu Problem mit Dantezeile und fehlerhafte Angebotsgültigkeit. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
DHL 4.0 mit JTL Wawi 1.7.13.0 JTL-Wawi 1.7 2
Neu Google Shopping: g:product_type mit Attribut befüllen ist immer DE, obwohl mehrsprachig angelegt Plugins für JTL-Shop 0
Neu Listung mit Varianten - nicht alle Varianten sind vorhanden Amazon-Lister - Fehler und Bugs 0
Häufiges Aufhängen - vermutlich Probleme mit der Datenbank JTL-Wawi 2.0 6
Neu Kein permanenter Dataflow mit Kern FCB Waage JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 2
Neu DRIGEND HILFE!!! Ebay Abgleich endet mit Arithmetischer Überlauffehler für tinyint-Datentyp, Wert = -1. Die Anweisung wurde beendet. eBay-Anbindung - Fehler und Bugs 4
Wawi 1.10.14.3 lässt sich nicht mehr mit Datev verbinden JTL-Wawi 1.10 3
Problem Wawi 2.0 mit DHL Versand JTL-Wawi 2.0 1
Neu JTL-WaWi + ESL Connector — Entwicklung mit Kostenaufteilung gesucht Business Jungle 0
Neu Ort mit OT per Workflow bereinigen JTL-Workflows - Ideen, Lob und Kritik 3
Statistische Auswertung mit Klar Connector oder Controlling Software? JTL-Wawi 1.10 0
Artikelnamen bei Varioartikel nichtänderbar mit csv JTL-Wawi 1.10 0
Neu Probleme mit Ninepoint und TikTok Shop Schnittstellen Import / Export 6
FFN Abgleich schlägt fehlt mit Worker 2.0 JTL-Wawi 2.0 0
Eingangsrechnungen mit Einstellung "Nur gelieferte Positionen übernehmen" - Versandkosten werden nicht mit übernommen JTL-Wawi 1.11 4
Neu 5.6.1 Bug bei Versandarten mit Kalkulation durch Artikelmenge und Staffelpreisen JTL-Shop - Fehler und Bugs 2
Neu Ältere Young Fashion Kollektion: Mit Kaufland, TikTok & Influencer schnell hochziehen und abverkaufen? Dienstleistung, Jobs und Ähnliches 1
Neu Problem mit "eigenen Seiten" Betrieb / Pflege von JTL-Shop 2
Probleme mit JTL Worker JTL-Wawi 2.0 1
Neu Kein Abgleich mit Amazon nicht mehr möglich JTL-Wawi 2.0 0
Neu Anbindung der POS funktioniert nicht unter WAWI2.0.0 mit EcomData Hosting JTL-Wawi 2.0 7
Neu Bestandsabgleich JTL Wawi mit Amazon JTL-Wawi - Fehler und Bugs 1
Neu Teillieferung nur mit Rechnung über ganzen Auftrag oder ohne Rückstandsmeldung möglich Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Artikel Wareneingang buchen mit anderer Währung? JTL-Wawi 1.10 0
Worklflow mit einem externen PDF Anhang JTL-Wawi 1.10 0
Neu Aufträge mit JTL-Pos gezahlt im Tagesabschluss (Lexware Office) Allgemeine Fragen zu JTL-POS 0
Neu Bilder importieren mit "vorhandene Bilder vor dem Import entfernen und neu importieren" > eigenartiges Verhalten JTL-Ameise - Fehler und Bugs 2
Problem mit Hintergrundfarbe Einrichtung JTL-Shop5 1
Neu Artikel letzte 10 Versanddaten, sortiert nach Datum mit Plattform Eigene Übersichten in der JTL-Wawi 4
Neu Worker Abgleich mit dem Onlineshop "mit Fehlern beendet" Onlineshop-Anbindung 4
Neu JTL, was ist eigentlich los mit euch? JTL-Wawi - Fehler und Bugs 5
Gelöst Bekannte Störung: Fehler "Der Inhaltstyp text/html stimmt nicht mit text/xml überein" bei der Labelerstellung Gelöste Themen in diesem Bereich 1
Neu BIETE: 2x Fetra 2892 Kommissionier-/Lagerwagen mit Sichtlagerkästen Dienstleistung, Jobs und Ähnliches 0
Neu Export Käuferliste mit Seriennummern User helfen Usern - Fragen zu JTL-Wawi 4
Neu Problem bei Varianten-Upload mit Amazon Lister 2.0 (Attribut-Mapping Farbe/Größe) Onlineshop-Anbindung 1
Neu Probleme mit Inaktive Verkaufskanäle User helfen Usern - Fragen zu JTL-Wawi 0
Verkauf: Positionsname mit Hersteller möglich? JTL-Wawi 1.11 20

Ähnliche Themen