从 GO 中的 json 数组映射输出

我需要从 Json 数组创建一个地图,我从下面的 GO 开始,有点卡住,有什么指针吗?


    package main


import (

    "encoding/json"

    "fmt"

    "strconv"

)


func main() {


    jsonStr := `{

  "employee": [

    {

      "id": 14325,

      "grpname": "senior"

    },

    {

      "id": 234,

      "grpname": "junior"

    }

  ]

}`


    type Group struct {

        Employee []struct {

            GroupName string

            GroupId   int

        }

    }


    var group []Group


    var groupMap []map[string]interface{}


    err := json.Unmarshal([]byte(jsonStr), &groupMap)


    if err != nil {

        panic(err)

    }


    for _, groupData := range groupMap {


        // convert map to array of Group struct

        var g Group

        g.GroupName = fmt.Sprintf("%s", groupData["grpname"])

        g.GroupId, _ = strconv.Atoi(fmt.Sprintf("%v", groupData["id"]))

        group = append(group, g)


    }

    fmt.Println(group)


}

错误:


./prog.go:45:4: g.GroupName undefined (type Group has no field or method GroupName)

./prog.go:46:4: g.GroupId undefined (type Group has no field or method GroupId)

预期输出:


{"senior": 14325,"junior": 234}

尝试了一些类似下面的操作,但出现错误:出现错误:%!(EXTRA string=json: cannot unmarshal array into Go struct field GetEmpResponse.employee of type map[string][]model.Employee)


类型 GetEmpResponse 结构 { Employee map[string][]Employee json:"employee" }


为我的测试尝试简化Json,请参考 play.golang.org


慕码人8056858
浏览 101回答 1
1回答

哔哔one

empResponse.Employee是一个数组,所以你必须通过索引访问它的元素,例如empResponse.Employee[0].ID
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go