为了账号安全,请及时绑定邮箱和手机立即绑定

将 JSON 文件解析为 struct golang

将 JSON 文件解析为 struct golang

Go
MM们 2021-10-25 16:47:20
我有这个 JSON 文件:    {  "AHSS": {    "Lifelong Learning": "1sVhClGzmD5N_S6wGiS9_xHj2IkVgSv_un0rktvH2Goo",    "TEST Learning": "1sdfVhClGzmD5N_S6wGiS9_xHj2ffgIkVgSv_un0rko56545o",    "TEST Learning2": "fg1ac_PiSaWzeL3bA3tjWYs23dh61sVhClHj2IkVgSv_un0rktvH2Goo",    "TEST Learning3": "13444sVhClGzmD5N_S6wGiS9_xHj2IkVgSv_un0rktyutvH2Goo",    "TEST Learning4": "6657681sVhClGzmD5N_S6wGiS9_xHj2IkVgSv_un0rktvH2Goo"  },  "ProfServices": {    "IT": "1fgac_PiSaWzeLxxdVuZs3bA3tjWY345d",    "SomethingElse": "1ac_Pi3bA3tjWY4563",    "Foo": "12ac_PiVuZs3bA3tjWYghfgj",    "Bar": "445341ac_PiSaWzeLxA3tjWY54",    "School1": "fg1ac_PiSaWzeL3bA3tjWYs23dh6",    "School2": "fg341ac_PiSaWzeLZs3bA3tjWYsd4",    "School3": "fgdf1ac_PiSaWzeLuZs3bA3tjWdgfY"      },  "CollegeOfEngineering": {    "Maths": "asdasdasdas45",    "Physics": "pa6asa_Asddg",    "Astrophysics": "asdfdasdasda",    "School5": "mykeyyslaksdlkasmdlka",    "School6": "asdasdkeykeykeykey"  },  "AnotherCollege": {    "School7": "f111g1a2c_PiSaWzeL3bA3tjWYsdh6",    "School8": "f4434234g341ac_PiSafgdfgdfgWzeLZs3bA3tjWYsd4",    "School9": "fg23df1ac_PiSaWzeLuZs3bA3tjWdgfY"  }}这只是一个测试示例,但我的实际 json 文件将包含更多数据。但格式将始终相同。我将拥有一系列“学院”,例如“AHSS”和“ProfServices”。这些学院中有“学校”,例如“IT”或“终身学习”。每所学校都有自己独特的钥匙。我需要读取这个 JSON 文件并将其转换为结构。我试过环顾四周并同时使用 json.Decode 和 json.Unmarshal,但我真的不知道如何获得我需要的东西。我尝试过的所有内容都会打印出一个空结构。也许我的结构在 go 中的布局是错误的?这是我正在使用的结构布局(不是 100% 这是正确的):    // Sheets struct will import from sheets.json    Sheets struct {        Colleges []struct {            SheetKeys []string        }    })这是我尝试使用的两种方法来实现将 json 文件导入结构的目标。1)sheetData, err := os.Open("sheets.json")if err != nil {    log.Fatalln(err)}jsonParser := json.NewDecoder(sheetData)s := Sheets{}jsonParser.Decode(&s)log.Println(s)2)sheetData, err := ioutil.ReadFile("sheets.json")s := Sheets{}err = json.Unmarshal(sheetData, &s)if err != nil {    log.Fatalln(err)}log.Println(s)任何人都可以提供一种正确导入此json文件的方法吗?我不确定是我的方法有问题,还是结构布局有问题。谢谢。
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

这就是我写的将 JSON 字符串转换为 struct 或 struct To JSON 的内容。只需将您的结构(如您的 JSON )作为interface{}


/*

JSONStringToStructure error

convert json string to given struct

*/

func JSONStringToStructure(jsonString string, structure interface{}) error {

    jsonBytes := []byte(jsonString)

    return json.Unmarshal(jsonBytes, structure)

}


/*

StructureToJSON (string,error)

convert struct to json string

*/

func StructureToJSON(structure interface{}) (string, error) {

    bin, err := json.Marshal(structure)

    return string(bin), err

}


查看完整回答
反对 回复 2021-10-25
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信