亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

根據參數值在 Golang 中解碼傳入的 JSON

根據參數值在 Golang 中解碼傳入的 JSON

Go
慕勒3428872 2021-09-10 15:20:09
我正在嘗試在我用 Go 編寫的 REST API 中解碼傳入的 JSON。我正在使用decoder.Decode()函數,我的問題是我需要對解碼過程中應該使用哪個結構應用某些規則,因為有時 JSON 包含:"type": {    "type" : "string",    "maxLength" : 30},而有時:"type": {    "type" : "integer",    "max" : 30,    "min" : 10},我不知何故需要告訴 Go“如果 type.type 是字符串,則使用這個結構(type Type_String struct),如果 type.type 是整數,使用其他結構(type Type_Integer struct)”。我真的不知道該怎么做。我想到的一個解決方案是創建一個具有所有可能屬性的通用結構,在任何類型的對象上使用它,然后根據該type屬性過濾屬性,但這太臟了。我想我也可以編寫自己的解碼器,但這似乎也有點奇怪。我是 Go 的新手,我非常習慣 JavaScript 提供的自由。
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

首先,如果“type”的字段取決于“type.type”,在我看來,最好將其向上移動一級。就像是:


...

"type" : "integer",

"intOptions": {

    "max" : 30,

    "min" : 10

},

....

然后你可以創建一個只有一個字段的結構:


type Type struct {

    Type string

}

并執行以下操作:


myType := new(Type)

json.Unmarshal([]byte(yourJsonString), myType)

現在,根據 myType 的值,您可以使用不同的結構來解碼您的 json。


查看完整回答
反對 回復 2021-09-10
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號