2026-05-28

golang 要如何使用 json v2

最近嘗試一下 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 還好用,但畢竟這還是實驗性的,研究可以,實際產品還是先別用吧。

沒有留言:

張貼留言