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.
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.
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!