第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當(dāng) json 輸入結(jié)構(gòu)錯誤時,Unmarshall 應(yīng)該返回錯誤

當(dāng) json 輸入結(jié)構(gòu)錯誤時,Unmarshall 應(yīng)該返回錯誤

Go
千巷貓影 2023-06-12 09:19:14
我有結(jié)構(gòu) A 和 B。當(dāng) JSON 字符串 A 被解組為結(jié)構(gòu) A 時它是有效的,但是如果 JSON 字符串 A 被解組為結(jié)構(gòu) B 它仍然是成功的(這不應(yīng)該)。有什么方法可以檢測到錯誤的 JSON 輸入已被錯誤地轉(zhuǎn)換為錯誤的結(jié)構(gòu)類型嗎?請看下面的代碼:package mainimport (? ? "encoding/json"? ? "fmt")type A struct {? ? Name string `json:"name"`? ? Age? int? ? `json:"age"`}type B struct {? ? Alamat string `json:"alamat"`? ? Umur? ?int? ? `json:"umur"`}func main() {? ? var structA A? ? var structAA A? ? valA := "{\"name\":\"budi\",\"age\":10}"? ? valB := "{\"alamat\":\"jakarta\",\"umur\":120}"? ? //correct case? ? err := json.Unmarshal([]byte(valA), &structA)? ? if err != nil {? ? ? ? fmt.Println("fail unmarshal")? ? }? ? fmt.Println(structA.Name)? ? fmt.Println(structA.Age)? ? //unmarshalled successfully but with wrong json? ? err = json.Unmarshal([]byte(valB), &structAA)? ? if err != nil {? ? ? ? fmt.Println("fail unmarshal")? ? }? ? fmt.Println(structAA.Name)? ? fmt.Println(structAA.Age)}
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個贊

默認(rèn)情況下,參考文檔json.Unmarshal(data []byte, v interface{}), 并不像您想象的那樣工作:

默認(rèn)情況下,沒有相應(yīng)結(jié)構(gòu)字段的對象鍵將被忽略(參見 Decoder.DisallowUnknownFields 的替代方法)。

因此,JSON 屬性alamatumur您的屬性valB將被忽略,因?yàn)樗鼈冊诮Y(jié)構(gòu)中不匹配A并且被設(shè)置為它們的默認(rèn)類型。nameage



查看完整回答
反對 回復(fù) 2023-06-12
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號