Maison > développement back-end > Golang > le corps du texte

La transformation Go Kazaam renvoie des résultats inattendus

WBOY
Libérer: 2024-02-14 12:09:08
avant
1255 Les gens l'ont consulté

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"
                ]
            }
        }
    ]
Copier après la connexion

Appliquer à ce json :

{
    "instruction": {
        "context": {
            "example1": "example1 value",
            "example2": "example2 value",
            "example3": [
                {
                    "id": "example3_1_value"
                },
                {
                    "id": "example3_2_value"
                },
                {
                    "id": "example3_3_value"
                }
            ]
        }
    }
}
Copier après la connexion

Le résultat est le suivant :

{
    "Shift": "example1 value",
    "Concat": "null_null"
}
Copier après la connexion

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"
}
Copier après la connexion

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"
            }
        },
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal