别人项目代码如下
var seedUrls []string
// read and parse json,相对路径
b, err := ioutil.ReadFile(confPath + "/" + conf.UrlListFile) //[91 10 32 32 ...]
if err != nil {
l4g.Error("readfile err[%s]", err)
SlowExit()
}
//json to []string
if err := json.Unmarshal(b, &seedUrls); err != nil { //把上面的b转换为[http://www.baidu.com]形式的字符切片
l4g.Error("parse json err[%s]", err)
SlowExit()
}
我的测试代码
jsonStr := `{"Name":"lepig", "Age":100}`
abc := []byte(jsonStr)
var result []string
if err := json.Unmarshal(abc, &result); err != nil {
fmt.Println(err)
return
}
fmt.Println(result)
在学习golang 看别的一个项目json解析这里没看明白。我的测试代码运行报错。但是我要是把我测试代码里的var result []string
修改为var result interface{}
就可以。 不明白的是,别人项目里的声明的var seedUrls []string
为什么就可以
PS: 有php基础,感觉学习golang很多东西不能快速理解。不知道如何入门
{"Name":"lepig", "Age":100}
是JSON Object
,无法反序列化到[]string
。比如用["a","b","c"]
就能反序列化到[]string
了。