最近嘗試一下 go1.25 新增的 json v2。不過沒想到一下子就卡關了
我程式如下
package main
import (
json "encoding/json/v2"
"log"
)
func main() {
out, err := json.Marshal(
struct {
N string
ID string
}{N: "John"},
)
if err != nil {
log.Fatal(err)
}
log.Printf("%s", out)
}
然而,執行 go run {這個 go 檔案}時,卻出現以下錯誤
imports encoding/json/v2: build constraints exclude all Go files in %USERPROFILE%\AppData\Local\go\src\encoding\json\v2
這主要原因是因為 json v2 是個實驗性 package,不在 golang v1 的相容性保證中。
所以需要特殊處理。
解決辦法
解法有兩種:
解法 1. ,加上環境變數
根據 json/v2 的說明,加上 GOEXPERIMENT 參數,設置為 jsonv2 即可
解法 2. 改 package
這是 gemini 給的解法,實際測試是可以正常運作的。
將 import "encoding/json/v2" 改成 import "github.com/go-json-experiment/json"。
github.com/go-json-experiment/json 是 json/v2 的 git repository。直接改用這個就不用再設置 GOEXPERIMENT 參數了。
結語
雖然網路上有人評測過,v2 真的比 v1 還好用,但畢竟這還是實驗性的,研究可以,實際產品還是先別用吧。
沒有留言:
張貼留言