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

从字节数组创建结构

从字节数组创建结构

Go
慕虎7371278 2021-12-20 17:07:13
我使用json.Marshal接口接受 amap[string]interface{}并将其转换为 a []byte(这是一个字节数组吗?)data, _ := json.Marshal(value)log.Printf("%s\n", data)我得到这个输出{"email_address":"joe@me.com","street_address":"123 Anywhere Anytown","name":"joe","output":"Hello World","status":1}底层字节属于以下声明的结构type Person struct {    Name           string  `json:"name"`    StreetAddress  string  `json:"street_address"`    Output         string  `json:"output"`    Status         float64 `json:"status"`    EmailAddress   string  `json:"email_address",omitempty"`}我想获取data并生成一个类型的变量Person struct我怎么做?
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

你使用json.Unmarshal:


package main


import (

    "encoding/json"

    "fmt"

)


type Person struct {

    Name          string  `json:"name"`

    StreetAddress string  `json:"street_address"`

    Output        string  `json:"output"`

    Status        float64 `json:"status"`

    EmailAddress  string  `json:"email_address",omitempty"`

}


func main() {

    data := []byte(`{"email_address":"joe@me.com","street_address":"123 Anywhere Anytown","name":"joe","output":"Hello World","status":1}`)

    var p Person

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

        panic(err)

    }

    fmt.Printf("%#v\n", p)

}

输出:


main.Person{Name:"joe", StreetAddress:"123 Anywhere Anytown", Output:"Hello World", Status:1, EmailAddress:"joe@me.com"}



查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

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