Heim  >  Artikel  >  Backend-Entwicklung  >  Die Go Kazaam-Transformation liefert unerwartete Ergebnisse

Die Go Kazaam-Transformation liefert unerwartete Ergebnisse

WBOY
WBOYnach vorne
2024-02-14 12:09:081216Durchsuche

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"
                ]
            }
        }
    ]

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"
                }
            ]
        }
    }
}

Das Ergebnis sieht so aus:

{
    "Shift": "example1 value",
    "Concat": "null_null"
}

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"
}

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"
            }
        },

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen