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.858
560
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
8.455
2.578
Berlin
Firma
css-umsetzung

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.858
560
..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.858
560
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.858
560
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
198
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 Komma aus Produktbezeichnung soll als Bindestrich in der URL sein Allgemeine Fragen zu JTL-Shop 1
Neu Neue Tracking-URL für DPD JTL-ShippingLabels - Fehler und Bugs 4
Neu Probleme beim Erstellen von Artikeln aus Angeboten von eBay User helfen Usern - Fragen zu JTL-Wawi 1
Ameise-Export: Umsatzsteuer stimmt nicht mit Differenz aus Netto und Brutto überein (insbesondere bei mehreren Steuersätzen) JTL-Wawi 1.11 0
Neu Gutscheincodes aus Shopware 6 in JTL Wawi als Anmerkung zeigen? Shopware-Connector 0
Neu nicht lieferbare Artikel aus Bestellung wieder auf die Einkaufsliste setzen ?! User helfen Usern - Fragen zu JTL-Wawi 1
Neu Merkmale Shop an oder Aus Allgemeine Fragen zu JTL-Shop 0
1.11.8 - Mengen aus FBA Umlagerungen werden nicht vom verfügbaren Bestand abgezogen JTL-Wawi 1.11 3
Globale Textbausteine aus alter WAWI 0.9 JTL-Wawi 1.10 0
Worker versendet keine E-Mails mehr aus der Workflow Queue JTL-Wawi 2.0 6
Neu Eigenes Feld aus Artikel in Artikeletikett ausgeben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu 1000te Zugriffe aus der ganzen welt auf applepay.php Allgemeine Fragen zu JTL-Shop 2
Neu Anwalt um aus Ads Dienstleistungsvertrag raus zu kommen User helfen Usern 4
Neu Zahlung von Kunden aus dem EU Ausland, Mwst falsch Plugins für JTL-Shop 1
Neu CSS GeoIP MwSt.-Finder 2.7.1 verhindert das Anlegen von Shop-Kundenkonten aus der Wawi Plugins für JTL-Shop 1
Neu Shop 5.6.1: Probleme beim Entfernen von Artikeln aus dem Warenkorb JTL-Shop - Fehler und Bugs 5
Neu Versandart Name aus Lieferschain anstatt aus auftrag einsetzen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Rückverfolgung des Verkaufskanal bei Angeboten aus dem Shop User helfen Usern - Fragen zu JTL-Wawi 3
Neu Rückverfolgung des Verkaufskanal bei Angeboten aus dem Shop Eigene Übersichten in der JTL-Wawi 0
Neu Import von Rechnungen oder Lieferungen aus anderem System Starten mit JTL: Projektabwicklung & Migration 0
Neu Erscheinungsdatum im Artikel aus Lieferdatum in Bestellung Arbeitsabläufe in JTL-Wawi 2
Serienmails aus dem Shop nach Kundenimport Einrichtung JTL-Shop5 0
Neu Artikel aus Shopware in der Wawi importieren und WMS redy machen Shopware-Connector 0
Versandbenachrichtungen werden jetzt aus Wawi versendet JTL-Wawi 1.11 10
Neu Frage zu SQL Statement - Kunden-Kommentar aus Auftrag auf Pickliste User helfen Usern - Fragen zu JTL-Wawi 1
Neu Alttexte aus OPC werden beim Slider nicht im Code angezeigt JTL-Wawi - Fehler und Bugs 0
Neu Der Inhalt / Text ist verschwunden – ist das ein Fehler JTL-Shop - Fehler und Bugs 0
Text Vorbereitung für WAWI import JTL-Wawi 1.11 3
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 eBay Artikel kommen in WaWi sporadisch als "Angebotsnummer" ohne Text JTL-Wawi - Fehler und Bugs 1

Ähnliche Themen