[RegEx und JSONPath] If/Then Abfrage mit Nullwert - Hilfe benötigt

  • Liebe Community,

    ich benötige die Expertise und das Hirnschmalz von Leuten, die besser als ich programmieren können. Spoiler Alarm: Wenn man im Lexikon den Artikel "unfähigster Programmierer" nachschlägt, findet man ein Foto von mir. ^^:saint:

    "Reguläre Ausdrücke" sind meine Achillesverse. Die Logik und die Formatierung will einfach nicht in meinen Schädel. ||

    Ich suche nach einem Ausdruck, der folgendes macht:

    Beispiel 1:

    Code
    $1 = Enddatum Mitgliedschaft (z.B. 31.08.2024)
    $2 = 31.12.2025
    
    $Ende_Mitgliedschaft = Wenn $1 keinen Wert hat (also null ist), nimm stattdessen $2.


    Beispiel 2:

    Code
    $1 = Kündigung Mitgliedschaft (z.B. 31.08.2024)
    $2 = Enddatum vetragliche Mitgliedschaft (z.B. 31.12.2024)
    $3 = 31.12.2025
    
    $Ende_Mitgliedschaft = Wenn $1 keinen Wert hat (also null), dann nimm $2. Wenn aber $2 auch keinen Wert hat (also null), nimm stattdessen $3.

    Normalerweise lässt sich so etwas per Variablen in einer Shell kinderleicht abbilden, aber in diesem Fall habe ich nur ein Tool, dass RegEx und JSONPath versteht. Bei diesem Thema bin ich total verloren. Kann mir jemand von Euch weiterhelfen?

    Daily Driver PC: Pop!_OS 22.04 + Win 10 Dual Boot/ Intel i7-7700K / NVIDIA GeForce GTX 1070 / 32 GB RAM / 3x 1TB Samsung SSD

    Daily Driver Laptop: Framework 13 / Ubuntu 24.04 LTS / AMD Ryzen 7 7840U / 64 GB RAM / 2TB WD NVME

    Backup Laptop: HP Elitebook x360 1030 G2 / Fedora 40 / Intel i5-7200U / Intel HD 620 / 8 GB RAM / 500 GB Samsung NVMe

    Spiele PC: MX Linux + Garuda / AMD Ryzen 7 7800X3D / Radeon RX 6750 XT / 64 GB RAM / 2TB Samsung NVME + 512 GB Kingston NVME + 250 GB Samsung SSD

  • Beispiel 1:

    JSON:

    JavaScript
    {
      "enddatum_mitgliedschaft": null,
      "standard_enddatum": "31.12.2025"
    }

    Json Path:

    Code
    $.enddatum_mitgliedschaft ?: $.standard_enddatum


    Beispiel 2:

    Json:

    Code
    {
      "kuendigung_mitgliedschaft": null,
      "enddatum_vertragliche_mitgliedschaft": null,
      "standard_enddatum": "31.12.2025"
    }


    Json Path:

    Code
    $.kuendigung_mitgliedschaft ?: $.enddatum_vertragliche_mitgliedschaft ?: $.standard_enddatum
  • Villeicht noch zur Erklärung:

    Das ?: ist eine spezielle Syntax in einigen Implementierungen von JSONPath, die wie ein coalesce-Operator funktioniert. Es gibt den ersten nicht-null-Wert zurück.
    Daher du müsstest prüfen ob bei dir den Syntax funktioniert, da der JSONPath Syntax nicht überall 1:1 identisch ist, nach meinem aktuellen Kenntnisstand kann es die JsonPath Implementierung in Java z.b. nicht.

  • Du bist mein Held! Vielen, vielen Dank. :):thumbup:

    Daily Driver PC: Pop!_OS 22.04 + Win 10 Dual Boot/ Intel i7-7700K / NVIDIA GeForce GTX 1070 / 32 GB RAM / 3x 1TB Samsung SSD

    Daily Driver Laptop: Framework 13 / Ubuntu 24.04 LTS / AMD Ryzen 7 7840U / 64 GB RAM / 2TB WD NVME

    Backup Laptop: HP Elitebook x360 1030 G2 / Fedora 40 / Intel i5-7200U / Intel HD 620 / 8 GB RAM / 500 GB Samsung NVMe

    Spiele PC: MX Linux + Garuda / AMD Ryzen 7 7800X3D / Radeon RX 6750 XT / 64 GB RAM / 2TB Samsung NVME + 512 GB Kingston NVME + 250 GB Samsung SSD

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!