我正在開(kāi)發(fā)將接收 JSON 的 Web 服務(wù)。Go 轉(zhuǎn)換類(lèi)型過(guò)于嚴(yán)格。所以,我沒(méi)有下面的函數(shù)轉(zhuǎn)換interface{}中boolfunc toBool(i1 interface{}) bool { if i1 == nil { return false } switch i2 := i1.(type) { default: return false case bool: return i2 case string: return i2 == "true" case int: return i2 != 0 case *bool: if i2 == nil { return false } return *i2 case *string: if i2 == nil { return false } return *i2 == "true" case *int: if i2 == nil { return false } return *i2 != 0 } return false}我認(rèn)為,功能還不夠完善,我需要的功能轉(zhuǎn)換interface{}中string,int,int64,等所以我的問(wèn)題:是否有庫(kù)(函數(shù)集)Go可以轉(zhuǎn)換interface{}為某些類(lèi)型更新我的 Web 服務(wù)接收 JSON。我解碼它,map[string]interface{}我無(wú)法控制那些編碼它的人。所以我收到的所有值都是interface{}并且我需要將它轉(zhuǎn)換為某些類(lèi)型的方法。所以它可能是nil, int, float64, string, [...],{...}我希望把它轉(zhuǎn)換成它應(yīng)該是的樣子。例如int, float64, string, []string,map[string]string處理所有可能的情況,包括nil, 錯(cuò)誤值等更新2我收到{"s": "wow", "x":123,"y":true}, {"s": 123, "x":"123","y":"true"}, {a:["a123", "a234"]},{}var m1 map[string]interface{}json.Unmarshal(b, &m1)s := toString(m1["s"])x := toInt(m1["x"])y := toBool(m1["y"])arr := toStringArray(m1["a"])
將接口{}轉(zhuǎn)換為特定類(lèi)型
開(kāi)心每一天1111
2021-07-05 12:09:24