1 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個贊
m["t"]是類型interface{}并且是完整的數(shù)組,如果你想得到str-b它是在索引一,你必須做一些類型斷言來得到它作為一個字符串。這是一個例子;https://play.golang.org/p/W7ZnMgicc7
如果你想在看起來像這樣的集合中檢查它;
包主
import (
"fmt"
"encoding/json"
)
func main() {
var m map[string]interface{}
sJSON := `{"k": "v", "t":["str-a","str-b","str-c"]}`
_ = json.Unmarshal([]byte(sJSON),&m)
// find out if one of the string values of "t" is "str-b"
for _, v := range m["t"].([]interface{}) {
if v.(string) == "str-b" {
fmt.Println("match found!")
}
}
//fmt.Println(m["t"].([]interface{})[1].(string))
}
https://play.golang.org/p/vo_90bKw92
如果你想避免這種“拆箱”的東西,我建議你這樣做,你可以定義一個結(jié)構(gòu)來解組,它看起來像這樣;
type MyStruct struct {
K string `json:"k"`
T []string `json:"t"`
}
然后,您可以在T沒有任何類型斷言的情況下進(jìn)行范圍檢查并在此處進(jìn)行比較,工作示例; https://play.golang.org/p/ehPxOygGf5
- 1 回答
- 0 關(guān)注
- 344 瀏覽
添加回答
舉報(bào)