go语言string转结构体的实现

 更新时间:2023年03月17日 10:28:22   作者:i wanan  
本文主要介绍了go语言string转结构体的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在 Go 语言中,可以使用标准库中的 encoding/json 包将 JSON 格式的字符串转换为结构体。

假设有以下 JSON 字符串:

{
    "name": "鸡哥",
    "age": 28,
    "gender": "男",
    "hobby": {
        "sing": "唱",
        "jump": "跳",
        "rap": "rap",
        "ball":"篮球"
    }
}

可以定义一个对应的结构体类型:

type hobby struct {
    Sing    string  `json:"sing"`
    Jump    string `json:"jump"`
    Rap     string  `json:"rap"`
    Hobby hobby    `json:"hobby"`
}

type Person struct {
    Name string `json:"name"`
    Age string  `json:"age"`
    Gender string `json:"gender`
    Hobby hobby `json:"hobby"`
}

然后使用 json.Unmarshal() 函数将 JSON 字符串解析为该结构体类型的实例:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonStr := `{
    "name": "鸡哥",
    "age": 28,
    "gender": "男",
    "hobby": {
        "sing": "唱",
        "jump": "跳",
        "rap": "rap",
        "ball":"篮球"
    }
}`

    var person Person
    if err := json.Unmarshal([]byte(jsonStr), &person); err != nil {
        fmt.Println("解析 JSON 失败:", err)
        return
    }

    fmt.Printf("爱好:%s\n唱:%d\n跳:%s\n爱好:%v\n", person.Sing, person.Jump, person.Rap, person.Hobby)
}

在这个例子中,我们将 JSON 字符串 jsonStr 解析为类型为 Person 的结构体实例 person。&person 表示将 person 的地址传递给 json.Unmarshal() 函数,让它将解析的结果填充到 person 中。如果解析失败,会返回一个非空的错误对象。

到此这篇关于go语言string转结构体的实现的文章就介绍到这了,更多相关go语言string转结构体内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang生成RSA公钥和密钥的实现方法

    golang生成RSA公钥和密钥的实现方法

    本文主要介绍了golang生成RSA公钥和密钥的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • go语言题解LeetCode1299将每个元素替换为右侧最大元素

    go语言题解LeetCode1299将每个元素替换为右侧最大元素

    这篇文章主要为大家介绍了go语言LeetCode刷题1299将每个元素替换为右侧最大元素示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Go语言多人聊天室项目实战

    Go语言多人聊天室项目实战

    这篇文章主要为大家详细介绍了Go语言多人聊天室项目实战,实现单撩或多撩等多种功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Go如何优雅的使用字节池示例详解

    Go如何优雅的使用字节池示例详解

    在编程开发中,我们经常会需要频繁创建和销毁同类对象的情形,这样的操作很可能会对性能造成影响,这时常用的优化手段就是使用对象池(object pool),这篇文章主要给大家介绍了关于Go如何优雅的使用字节池的相关资料,需要的朋友可以参考下
    2022-08-08
  • Go在GoLand中引用github.com中的第三方包具体步骤

    Go在GoLand中引用github.com中的第三方包具体步骤

    这篇文章主要给大家介绍了关于Go在GoLand中引用github.com中第三方包的具体步骤,文中通过图文介绍的非常详细,对大家学习或者使用Go具有一定的参考价值,需要的朋友可以参考下
    2024-01-01
  • 一文带你了解Golang中类型转换库cast的使用

    一文带你了解Golang中类型转换库cast的使用

    你是否在使用 Go 的过程中因为类型转换的繁琐而苦恼过?你是否觉得 Go 语言中的类型断言可能会 panic 而对自己写的代码有那么一点点不放心?本文就为大家推荐一个用于类型转换的第三方库 cast 绝对是一个值得尝试的选择
    2023-02-02
  • golang实现大文件上传功能全过程

    golang实现大文件上传功能全过程

    Go语言可以用来实现大文件传输,下面这篇文章主要给大家介绍了关于golang实现大文件上传功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Golang学习笔记(二):类型、变量、常量

    Golang学习笔记(二):类型、变量、常量

    这篇文章主要介绍了Golang学习笔记(二):类型、变量、常量,本文讲解了基本类型、保留字、变量、常量、枚举、运算符、指针、分组声明等内容,需要的朋友可以参考下
    2015-05-05
  • 基于Go语言实现选择排序算法及优化

    基于Go语言实现选择排序算法及优化

    选择排序是一种简单的比较排序算法.这篇文章将利用Go语言实现冒泡排序算法,文中的示例代码讲解详细,对学习Go语言有一定的帮助,需要的可以参考一下
    2022-12-12
  • GoLang使goroutine停止的五种方法实例

    GoLang使goroutine停止的五种方法实例

    goroutine是Go并行设计的核心,下面这篇文章主要给大家介绍了关于GoLang使goroutine停止的五种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论