go语言读取json格式字符串问题,在线等!
高洛峰
高洛峰 2016-11-10 11:49:58
0
2
1202

package main import (

"encoding/json" "fmt" 
)

func main ( ) {

str:=`{"repositories":["heapster","mysql","zeppelin"]}`
byteStr:=[]byte(str)

type Repository struct{
    repositories []string
}
var repo Repository
json. Unmarshal ( byteStr , &repo )
fmt.Println(repo)

}

最后输出为空的数组,请问哪里错了???


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(2)
学霸

你这个是struct的item都是私有的,只能当前package调用,要是传给json的话,就会读取不到定义struct的时候大写首字母即可

func main(){
str:=`{"repositories":["heapster","mysql","zeppelin"]}`
byteStr:=[]byte(str)
type Repository struct{
    Repositories []string
}
var repo Repository
json. Unmarshal ( byteStr , &repo )
fmt.Println(repo) 
}

至于楼上说的struct加tag描述,那是为了字段名不一致使用的,默认情况下解析首字母大写会自动检测小写的,下面这种情况就需要定义tag表述

func main(){
str:=`{"test_repositories":["heapster","mysql","zeppelin"]}`
byteStr:=[]byte(str)
type Repository struct{
    Repositories []string `json:"test_repositories"`
}
var repo Repository
json. Unmarshal ( byteStr , &repo )
fmt.Println(repo) 
}


三叔
type Repository struct{
    Repositories []string `json:"repositories"`
}

可导出字段才可以被反射赋值

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿