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

 互联网控军 发布于 2022-11-26 00:35

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)

}

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


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


    2022-11-26 00:52 回答
  • type Repository struct{
        Repositories []string `json:"repositories"`
    }

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

    2022-11-26 00:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有