go - map[string]interface{} 到带有 json 标签的结构

标签 go

我需要将一个 map[string]interface{} 其键是 json 标签名称转换为 struct

type MyStruct struct {
    Id           string `json:"id"`
    Name         string `json:"name"`
    UserId       string `json:"user_id"`
    CreatedAt    int64  `json:"created_at"`
}

map[string]interface{} 具有键 idnameuser_id创建于。我需要将其转换为 struct

最佳答案

如果我没看错的话,你有一张 map ,想要填充结构。如果是先改成jsonString再Unmarshal成struct

package main

import (
    "encoding/json"
    "fmt"
)

type MyStruct struct {
    Id           string `json:"id"`
    Name         string `json:"name"`
    UserId       string `json:"user_id"`
    CreatedAt    int64  `json:"created_at"`
}

func main() {
    m := make(map[string]interface{})
    m["id"] = "2"
    m["name"] = "jack"
    m["user_id"] = "123"
    m["created_at"] = 5
    fmt.Println(m)

    // convert map to json
    jsonString, _ := json.Marshal(m)
    fmt.Println(string(jsonString))

    // convert json to struct
    s := MyStruct{}
    json.Unmarshal(jsonString, &s)
    fmt.Println(s)

}

更新 2021-08-23

虽然我看到了,但这篇文章很有用。我在我的要点上发布了一个完整的示例,请查看here

关于go - map[string]interface{} 到带有 json 标签的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48994008/

相关文章:

go - 将可变数量的 url 映射到 HandleFunc

go - 非 base64 字符串按原样处理

go - 检查结构字段是否为空

go - 数据库已锁定(延迟行不起作用)

GoLang 复制命令准备好的语句不工作

Golang Bufio 编写器不写入 TCP 连接

firebase - FCM Go Admin SDK 提供 MismatchSenderId

go - 等待 go 例程完成然后从 channel 读取

mysql - Golang动态绑定(bind)变量个数

go - 声明 slice 还是制作 slice ?