3 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
對于這種特殊情況,您可以使用:
jsonbody := map[string]error{"Error": nil}
但對于更一般化的情況,您還可以使用:
jsonbody := map[string]interface{}{"Error": nil}
兩種方法都會(huì)產(chǎn)生:
{"Error":null}

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果將類型更改為*int,它將執(zhí)行您想要的操作:
type OKResponse struct {
Error *int `json:"Error"`
}
例子:
r1 := OKResponse{}
result1, _ := json.Marshal(r1)
fmt.Printf("result1 = %s\n", string(result1))
errNo := 1
r2 := OKResponse{Error: &errNo}
result2, _ := json.Marshal(r2)
fmt.Printf("result2 = %s\n", string(result2))
輸出:
result1 = {"Error":null}
result2 = {"Error":1}
在操場上看到它。

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于 number 無法獲得nil值,因此您不能那樣做。
您可以做的是使用指針類型,然后就可以完成,例如:
package main
import (
"fmt"
"encoding/json"
)
func main() {
jsonbody := map[string]*int{"Error": nil}
encoded, _ := json.Marshal(&jsonbody)
fmt.Printf("%s", encoded)
num := 6
jsonbody = map[string]*int{"Error": &num}
encoded, _ = json.Marshal(&jsonbody)
fmt.Printf("%s", encoded)
}
https://play.golang.org/p/TTpgr7Cy17C
- 3 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)