Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Transformasi Go Kazaam mengembalikan hasil yang tidak dijangka

Transformasi Go Kazaam mengembalikan hasil yang tidak dijangka

WBOY
WBOYke hadapan
2024-02-14 12:09:081214semak imbas

Go Kazaam 转换返回意外结果

editor php Youzi baru-baru ini mendapati bahawa alat penukaran baharu Go Kazaam mempunyai beberapa hasil yang tidak dijangka apabila pengguna menggunakannya. Alat ini pada asalnya direka untuk membantu pembangun menukar kod dengan cepat dan meningkatkan kecekapan pembangunan. Walau bagaimanapun, sesetengah pengguna melaporkan bahawa masalah yang tidak dijangka berlaku semasa penggunaan. Ini telah menarik perhatian pembangun dan pengguna Dalam artikel ini, kami akan membincangkan isu ini dan memberikan penyelesaian.

Kandungan soalan

Saya menggunakan modul kazaam untuk mentakrifkan penukaran json. https://github.com/qntfy/kazaam

Ini adalah peraturan saya:

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

Mohon ke json ini:

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

Hasilnya begini:

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

Jadi operasi pertama berfungsi, operasi kedua mengembalikan null_null, dan operasi ketiga tidak muncul.

Penyelesaian

Peraturan ini akan digunakan secara berurutan. Keputusan yang dihasilkan oleh peraturan pertama akan berfungsi sebagai input kepada peraturan kedua, dan seterusnya, ia dirantai bersama. Jadi penukaran pertama anda menghasilkan objek:

{
  "Shift": "example1 value"
}

Apabila perkara di atas digunakan sebagai input kepada tindakan kedua - anda akan mendapat nilai null kerana medan yang anda rujuk - tidak wujud.
Anda boleh cuba menukar peraturan pertama kepada:

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

Lihat cara ia berfungsi.

Atas ialah kandungan terperinci Transformasi Go Kazaam mengembalikan hasil yang tidak dijangka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam