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

查看:149
本文介绍了golang - go语言读取json格式字符串问题,在线等!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

这篇关于golang - go语言读取json格式字符串问题,在线等!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆