URL aus Text extrahieren, Dotliquid, Regex

DanielW

Neues Mitglied
28. Juli 2024
28
14
Hallo,

das Feld {{ Vorgang.EigeneFelder.KundenID.Feld_1 }} enthält folgende Daten:
Code:
{"success":true,"key":"66a6ec43c8f7d0@30578045","link":"https://zensiert.url/x/66a6ec43c8f7d0@30578045"}

wie bekomme ich es eingerichtet, dass davon nur folgender Teil ausgegeben wird:
Code:
https://zensiert.url/x/66a6ec43c8f7d0@30578045


Ich habe zwar einen passenden Regex Filter, welcher die URL ausfiltern kann:
Code:
/(??:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/igm

jedoch weiß ich nicht, wie ich wo ich diesen mit dotliquid einbauen kann.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.733
523
das Feld {{ Vorgang.EigeneFelder.KundenID.Feld_1 }} enthält folgende Daten:
Code:
{"success":true,"key":"66a6ec43c8f7d0@30578045","link":"https://zensiert.url/x/66a6ec43c8f7d0@30578045"}
wie bekomme ich es eingerichtet, dass davon nur folgender Teil ausgegeben wird:
Code:
https://zensiert.url/x/66a6ec43c8f7d0@30578045
Ich würde so etwas nicht mit dotliquid machen.
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, um diese Texte ein bisschen zu formatieren oder so, aber sobald man etwas komplexeres machen will (wie in deinem Fall) ist das "calling for problems"...

Ich würde komplexere Dinge immer von der DB-Engine erledigen lassen und dann nur noch das Ergebnis mit dotliquid ausgeben lassen.
Benutze immer das jeweills geeignete Tool: Datenverwaltung/-manipulation -> Datenbank, Ausgabe -> Dotliquid.
Man schreibt ja einen Brief auch nicht mit Excel (obwohl das auch gehen würde) ;)

In deinem Fall:
Dein Text in dem Datenbankfeld sieht ja nach JSON aus. Kann das sein?
Dann benutze doch anstatt der abenteuerlichen RegEx einfach die JSON Filter in MSSQL.

Mir ist über deine konkrete Anwendung zuwendig bekannt. Also wo die Daten herkommen, wie sie genau aussehen (also ob das obige alles ist, oder nur ein Teil) bzw. wie die Daten in das Feld kommen u.s.w.,
aber vielleicht reicht dir etwas wie select JSON_VALUE(Datenbankfeld, '$.link')
 
  • Gefällt mir
Reaktionen: css-umsetzung

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.559
2.093
Berlin

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.733
523
..oder, abhängig davon wie und wo dieses JSON herkommt, einfach gleich nur die URL in das Datenbankfeld speichern ;)
 

DanielW

Neues Mitglied
28. Juli 2024
28
14
Genau, ich habe hier ja mal ein Beispiel gezeigt wie man das machen kann.

https://forum.jtl-software.de/threads/moeglichkeit-json-mit-dotliquid-zu-parsen.180394/#post-1194409
In deinem Fall würde das hier vermutlich gehen

SQL:
{% assign key = 'link' -%}
{% capture query -%}
    SELECT JSON_VALUE('{{ Vorgang.EigeneFelder.KundenID.Feld_1  }}','$.{{ key }}') as out;
{% endcapture -%}
{{ query |DirectQueryScalar }}

kannst du das bitte nochmal prüfen?
Es kommt folgende Meldung: Fehler im Befehl: Der JSON-Text ist nicht ordnungsgemäß formatiert. An Position 0 wurde das unerwartete Zeichen "." gefunden.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.733
523
Du musst doch den Inhalt aus dem Feld einlesen und nicht einfach den Name des Feldes ;)
Und: Mit ISJSON() kannst du vorab prüfen, ob das was du da einliest überhaupt JSON ist.
Ansonsten hilft: https://learn.microsoft.com/en-us/sql/t-sql/functions/json-functions-transact-sql

Aber wie in meinem vorigen Post angemerkt, würde ich an deiner Stelle prüfen, ob es nicht sinnvoller sein könnte, in dem Feld direkt die URL zu speichern, anstatt diese dann in der Ausgabe (und auch vielleicht mehrmals?) zu parsen.
 

DanielW

Neues Mitglied
28. Juli 2024
28
14
Wenn der Inhalt in diesem Feld ist, dann sollte das mit dem Query schon passen
Passt :)
Habe mir noch die übliche "Sichbarkeitsklausel" drum herum gebaut, dann tritt auch der o.g. Fehler bei leerem Quellfeld nichtmehr auf :)
Vielen Dank :)

Aber wie in meinem vorigen Post angemerkt, würde ich an deiner Stelle prüfen, ob es nicht sinnvoller sein könnte, in dem Feld direkt die URL zu speichern, anstatt diese dann in der Ausgabe (und auch vielleicht mehrmals?) zu parsen.
Das war leider nicht möglich, das es die Rückmeldung aus einem Webrequest ist, dessen Server ich nicht beeinflussen kann.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.733
523
Er fragt die Variable ab, ob sie gefüllt ist mit nullOrEmpty
ah okay, danke 😄 ....der Name Sichtbarkeitsklausel für so eine If Abfrage is mir bisher noch nie untergekommen 😳

Falls @DanielW hier noch mitliest:
Es wäre sinnvoller, den Inhalt des Feldes mit isjson() zu prüfen. Damit erschlägt man alle drei Möglichkeiten: Feld ist null, oder das Feld ist leer, oder im Feld steht kein gütiges JSON. So erlebt man auch keine bösen Überraschungen, wenn der Request mal Käse liefert.
 

Powalowski

Sehr aktives Mitglied
20. Januar 2019
177
196
Genau, ich habe hier ja mal ein Beispiel gezeigt wie man das machen kann.

https://forum.jtl-software.de/threads/moeglichkeit-json-mit-dotliquid-zu-parsen.180394/#post-1194409
In deinem Fall würde das hier vermutlich gehen
Da ist er wieder, Trick 17 💯 Beste Lösung 👍🏻
Auch gleich gedacht, als ich das gesehen habe. Vom Feinsten.
Ich hoffe doch, dass die Wawi lange noch diese Spielwiese bleibt..
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Bild-URL per Workflow aus eigene Felder zuordnen – Geht das? User helfen Usern - Fragen zu JTL-Wawi 5
nachträgliche Änderung der URL Einrichtung JTL-Shop5 0
Neu JTL WAWI Versandarten Tracking URL Felder werden nicht agezeigt JTL-Wawi - Fehler und Bugs 1
Neu Artikelbilder URL Pfad exportieren JTL Ameise - Eigene Exporte 7
Neu WooCommerce Connector Fehler: Shop-URL verweist nicht auf einen gültigen Shop WooCommerce-Connector 6
Neu Google Search Console: 5xx-Fehler für nicht indexierte Seiten mit URL-Parametern – Warum? Betrieb / Pflege von JTL-Shop 3
Neu Artikel aus der Kategorieübersicht zum Warenkorb hinzufügen? Allgemeine Fragen zu JTL-Shop 0
Artikel aus Selektion verschieben JTL-Wawi 1.10 1
Artikel aus Amazon löschen JTL-Wawi 1.7 10
Rechnungserstellung nicht möglich aus Amazon - JTL-Wawi 1.10 3
Kategorien ohne WaWi aus Shop entfernen Einrichtung JTL-Shop5 2
Beantwortet Workflow: Zahlungserinnerung aus dem JTL Guid, versendet beim Testen mehr als nur 1 E-Mail JTL-Workflows - Fehler und Bugs 4
Neu Wie läuft eine Bestellung ab und wie bekomme ich die Aufträge aus dem Shop in die Wawi übertragen? Betrieb / Pflege von JTL-Shop 0
Neu Paypal-Zahlungen zuweisen, die aus Shopware bereits als gezahlt kommen Arbeitsabläufe in JTL-Wawi 2
Email aus der WAWI 1.9.7.0 werden nicht an Kunden gesendet JTL-Wawi 1.9 3
JTL 1.9.7.0 | Warum ändert sich der Nummernkreis für Rechnungen bei Bestellungen aus dem OTTO-Market und bei anderen Marktplatzanbindungen nicht? Otto.de - Anbindung (SCX) 3
Neu eBay Bestellung aus der Schweiz MwST und DHL User helfen Usern - Fragen zu JTL-Wawi 1
Neu Eigenes Feld aus Auftrag in Rechnung ausgeben. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 5
In Diskussion Bestand aus bestimmten Lager bei Auftragserstellung abfragen JTL-Workflows - Ideen, Lob und Kritik 5
Eigenes Datenfeld aus dem Artikelstamm in den Rechnungspositionen abbilden? JTL-Wawi 1.8 1
Neu Versandlabel direkt aus JTL WaWi JTL-ShippingLabels - Ideen, Lob und Kritik 1
Neu Fehlermeldung bei Synchronisation aus der WaWi: "Artikel "XYZ" kann nicht hochgeladen werden, da der Shop den Steuersatz '19' nicht unterstützt." WooCommerce-Connector 1
Produktdaten sind online - Wie jetzt aus JTL Angebotsdaten erstellen? kaufland.de - Anbindung (SCX) 0
Zahlung aus zwei "Quellen" JTL-Wawi 1.7 1
Neu Mediendateien aus Artikel sortimentsübergreifend entfernen JTL Ameise - Eigene Exporte 3
Neu Wie rufe ich Artikelbilder aus der Wawi im PowerBI Report Builder ab? User helfen Usern - Fragen zu JTL-Wawi 2
Änderungen aus Child-Template Einstellungen (Nova-child) werden nicht übernommen (Footer/Header) Einrichtung JTL-Shop5 3
Neu Kinderartikel aus bestehenden Artikeln JTL-Wawi 1.6 7
Neu Barauszahkungen etc aus POS im WaWi irgendwo sichtbar? Allgemeine Fragen zu JTL-POS 2
Neu Bestellbestätigung aus JTL SHOP mit Lieferadresse Dienstleistung, Jobs und Ähnliches 0
Neu Workflow-Bedingungen für Teillieferung aus zwei Lagern (Lager A & Lager B) User helfen Usern - Fragen zu JTL-Wawi 2
Neu Merkmale aus Globalen Angebotsvorlagen werden bei erstellen über Ameise nicht übernommen Wawi 1.10 eBay-Anbindung - Fehler und Bugs 0
Neu Packtisch+ erster Scan gibt keinen Erfolgston aus JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Beantwortet Packtisch liefert nicht nach FIFO aus Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 3
Neu Teillieferung aus Vorkommissionierung Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 6
Neu JTL GPSR Plugin - Automatischer https://-Prefix trotz HTML-Formatierung im Hersteller-Text Plugins für JTL-Shop 7
Neu Wartungsmodus - Text falsch User helfen Usern - Fragen zu JTL-Wawi 1
Neu Rich Text portlet ändert Links und Bild-URLs Allgemeine Fragen zu JTL-Shop 2
Neu Text-KI soll Duzen Arbeitsabläufe in JTL-Wawi 3
Neu Merkmal-Text im Shop ausgeben ...? Templates für JTL-Shop 1

Ähnliche Themen