登录
首页 >  Golang >  Go问答

go语言读取json格式字符串问题,在线等!

来源:SegmentFault

时间:2023-01-22 18:46:50 328浏览 收藏

本篇文章给大家分享《go语言读取json格式字符串问题,在线等!》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

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) 
}

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

正确答案

你这个是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) 
}

理论要掌握,实操不能落!以上关于《go语言读取json格式字符串问题,在线等!》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表