我正在開發將接收 JSON 的 Web 服務。Go 轉換類型過于嚴格。所以,我沒有下面的函數轉換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}我認為,功能還不夠完善,我需要的功能轉換interface{}中string,int,int64,等所以我的問題:是否有庫(函數集)Go可以轉換interface{}為某些類型更新我的 Web 服務接收 JSON。我解碼它,map[string]interface{}我無法控制那些編碼它的人。所以我收到的所有值都是interface{}并且我需要將它轉換為某些類型的方法。所以它可能是nil, int, float64, string, [...],{...}我希望把它轉換成它應該是的樣子。例如int, float64, string, []string,map[string]string處理所有可能的情況,包括nil, 錯誤值等更新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"])
2 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
快速/最佳方式是在時間執行中“投射”(如果您知道對象):
例如
package main
import "fmt"
func main() {
var inter (interface{})
inter = "hello"
var value string
value = inter.(string)
fmt.Println(value)
}
- 2 回答
- 0 關注
- 221 瀏覽
添加回答
舉報
0/150
提交
取消