Die Go Kazaam-Transformation liefert unerwartete Ergebnisse

WBOY
Freigeben: 2024-02-14 12:09:08
nach vorne
1255 Leute haben es durchsucht

Go Kazaam 转换返回意外结果

php-Editor Youzi hat kürzlich entdeckt, dass ein neues Konvertierungstool, Go Kazaam, einige unerwartete Ergebnisse lieferte, wenn Benutzer es verwendeten. Dieses Tool wurde ursprünglich entwickelt, um Entwicklern dabei zu helfen, Code schnell zu konvertieren und die Entwicklungseffizienz zu verbessern. Allerdings berichteten einige Nutzer, dass bei der Nutzung unerwartete Probleme aufgetreten seien. Dies hat die Aufmerksamkeit von Entwicklern und Benutzern auf sich gezogen. In diesem Artikel werden wir dieses Problem diskutieren und Lösungen anbieten.

Frageninhalt

Ich verwende das Kazaam-Modul, um die JSON-Konvertierung zu definieren. https://github.com/qntfy/kazaam

Das sind meine Regeln:

"rules": [
        {
            "operation": "shift",
            "spec": {
                "Shift": "instruction.context.example1"
            }
        },
        {
            "operation": "concat",
            "spec": {
                "sources": [
                    {
                        "path": "instruction.context.example1"
                    },
                    {
                        "path": "instruction.context.example2"
                    }
                ],
                "targetPath": "Concat",
                "delim": "_"
            }
        },
        {
            "operation": "coalesce",
            "spec": {
                "Coalesce": [
                    "instruction.context.example3[0].id"
                ]
            }
        }
    ]
Nach dem Login kopieren

Auf diesen JSON anwenden:

{
    "instruction": {
        "context": {
            "example1": "example1 value",
            "example2": "example2 value",
            "example3": [
                {
                    "id": "example3_1_value"
                },
                {
                    "id": "example3_2_value"
                },
                {
                    "id": "example3_3_value"
                }
            ]
        }
    }
}
Nach dem Login kopieren

Das Ergebnis sieht so aus:

{
    "Shift": "example1 value",
    "Concat": "null_null"
}
Nach dem Login kopieren

Die erste Operation funktioniert also, die zweite Operation gibt null_null zurück und die dritte Operation wird nicht angezeigt.

Lösung

Diese Regeln werden nacheinander angewendet. Die von der ersten Regel erzeugten Ergebnisse dienen als Eingabe für die zweite Regel usw. Sie werden miteinander verkettet. Ihre erste Konvertierung führt also zu einem Objekt:

{
  "Shift": "example1 value"
}
Nach dem Login kopieren

Wenn das Obige als Eingabe für die zweite Aktion verwendet wird, erhalten Sie den Wert null, da das Feld, auf das Sie verweisen, nicht existiert.
Sie können versuchen, die erste Regel wie folgt zu ändern:

{
            "operation": "shift",
            "spec": {
                "Shift": "instruction.context.example1",
                "instruction.context.example1": "instruction.context.example1",
                "instruction.context.example2": "instruction.context.example2"
            }
        },
Nach dem Login kopieren

Sehen Sie, wie es funktioniert.

Das obige ist der detaillierte Inhalt vonDie Go Kazaam-Transformation liefert unerwartete Ergebnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage