php小編柚子近日發現,一款新的轉換工具Go Kazaam在使用者使用過程中出現了一些意外結果。該工具原本被設計用來幫助開發者快速轉換程式碼,提高開發效率。然而,一些用戶回饋稱,在使用過程中出現了一些意料之外的問題。這引起了開發者和用戶的關注,我們將在本文中對此問題進行探討,並給出解決方案。
我使用 kazaam 模組來定義 json 轉換。 https://github.com/qntfy/kazaam
這些是我的規則:
"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" ] } } ]
套用於此 json:
{ "instruction": { "context": { "example1": "example1 value", "example2": "example2 value", "example3": [ { "id": "example3_1_value" }, { "id": "example3_2_value" }, { "id": "example3_3_value" } ] } } }
結果是這樣的:
{ "Shift": "example1 value", "Concat": "null_null" }
因此第一個操作有效,第二個操作傳回 null_null,而第三個操作則不會出現。
這些規則會依序套用。第一個規則產生的結果將作為第二個規則的輸入,依此類推,它們是連結在一起的。因此,您首先轉換會產生一個物件:
{ "Shift": "example1 value" }
當上述內容作為第二個操作的輸入時 - 您將獲得 null
值,因為您所引用的欄位 - 不存在。
您可以嘗試將第一條規則變更為:
{ "operation": "shift", "spec": { "Shift": "instruction.context.example1", "instruction.context.example1": "instruction.context.example1", "instruction.context.example2": "instruction.context.example2" } },
看看它的效果。
以上是Go Kazaam 轉換回傳意外結果的詳細內容。更多資訊請關注PHP中文網其他相關文章!