Maison  >  Article  >  développement back-end  >  La transformation Go Kazaam renvoie des résultats inattendus

La transformation Go Kazaam renvoie des résultats inattendus

WBOY
WBOYavant
2024-02-14 12:09:081216parcourir

Go Kazaam 转换返回意外结果

l'éditeur php Youzi a récemment découvert qu'un nouvel outil de conversion Go Kazaam avait des résultats inattendus lorsque les utilisateurs l'utilisaient. Cet outil a été conçu à l'origine pour aider les développeurs à convertir rapidement le code et à améliorer l'efficacité du développement. Cependant, certains utilisateurs ont signalé que des problèmes inattendus sont survenus lors de l'utilisation. Cela a attiré l'attention des développeurs et des utilisateurs. Dans cet article, nous discuterons de ce problème et proposerons des solutions.

Contenu de la question

J'utilise le module kazaam pour définir la conversion json. https://github.com/qntfy/kazaam

Voici mes règles :

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

Appliquer à ce json :

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

Le résultat est le suivant :

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

Ainsi, la première opération fonctionne, la deuxième opération renvoie null_null et la troisième opération n'apparaît pas.

Solution de contournement

Ces règles seront appliquées séquentiellement. Les résultats produits par la première règle serviront d’entrée à la deuxième règle, et ainsi de suite, ils s’enchaîneront. Ainsi, votre première conversion aboutit à un objet :

{
  "Shift": "example1 value"
}

Lorsque ce qui précède est utilisé comme entrée pour la deuxième action, vous obtiendrez la valeur null car le champ auquel vous faites référence n'existe pas.
Vous pouvez essayer de changer la première règle par : 

{
            "operation": "shift",
            "spec": {
                "Shift": "instruction.context.example1",
                "instruction.context.example1": "instruction.context.example1",
                "instruction.context.example2": "instruction.context.example2"
            }
        },

Voyez comment cela fonctionne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer