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

Golang json 解组

Golang json 解组

Go
拉莫斯之舞 2022-05-18 14:27:24
我是围棋新手。我有这样的json:{  "3415": {    "age": 25,    "name": "Tommy"  },  "3414": {    "age": 21,    "name": "Billy"  }}我想将其解组为结构:type People struct {    Id map[string]PeopleDetails}type PeopleDetails struct {    Age int `json:"age"`    Name string `json:"name"`}但是当我运行它时,我看到该结构返回 nil 值。我确实阅读了一些教程,但其中大多数都有预定义的键,如您在此处看到的“id”,例如每个新 json 的 3415 都不同。
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

当您必须处理“动态”json 键时,答案是使用结构映射。


您可以使用以下代码:


package main


import (

    "encoding/json"

    "fmt"

)


// Use the struct pointed by @Adirio

type People map[string]PeopleDetails

type PeopleDetails struct {

    Age  int    `json:"age"`

    Name string `json:"name"`

}


var data string = `{"3415":{"age":25,"name":"Tommy"},"3414":{"age":21,"name":"Billy"}}`


func main() {

    var p People

    if err := json.Unmarshal([]byte(data), &p); err != nil {

        fmt.Println(err)

    }

    fmt.Println(p)

}

GoPlayground: https: //play.golang.org/p/kVzNV56NcTd


查看完整回答
反对 回复 2022-05-18
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

尝试使用这些类型:


type People map[string]PeopleDetails


type PeopleDetails struct {

    Age int `json:"age"`

    Name string `json:"name"`

}


查看完整回答
反对 回复 2022-05-18
  • 2 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

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