Golang Go语言中如何动态的将一个 slice 内的 json 串 unmarshal 到一个 slice 内的 struct 上呢

发布于 1周前 作者 caililin 来自 Go语言

Golang Go语言中如何动态的将一个 slice 内的 json 串 unmarshal 到一个 slice 内的 struct 上呢
小弟有一个需求,需要通过外部文件获取多个 json 字符串,放在一个[][]bytes 里面。然后将其 unmarshal 到另外一个[]struct 里面。由于 json 有很多种,需要 unmarshal 到不同的 struct 内。想咨询各位大神,有什么优雅的方式,实现一个方法,传入[][]bytes 和 interface{}(实际为各种[]struct),得到 unmarshal 后的[]struct 呢?

1 回复

更多关于Golang Go语言中如何动态的将一个 slice 内的 json 串 unmarshal 到一个 slice 内的 struct 上呢的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在 Go 语言中,将 slice 内的 JSON 字符串动态地 unmarshal 到一个 slice 内的 struct 上,可以通过以下步骤实现:

  1. 定义目标 struct:首先,定义一个与 JSON 字符串对应的 struct 类型。

  2. 初始化目标 slice:创建一个该 struct 类型的 slice,用于存储 unmarshal 后的数据。

  3. 遍历 JSON slice:使用循环遍历包含 JSON 字符串的 slice。

  4. Unmarshal 每个 JSON 字符串:在循环中,使用 encoding/json 包中的 Unmarshal 函数,将每个 JSON 字符串 unmarshal 到一个新的 struct 实例中。

  5. 将 struct 实例添加到 slice:将 unmarshal 后的 struct 实例添加到目标 slice 中。

示例代码如下:

package main

import (
    "encoding/json"
    "fmt"
)

type MyStruct struct {
    Field1 string `json:"field1"`
    Field2 int    `json:"field2"`
}

func main() {
    jsonStrings := []string{`{"field1":"value1","field2":1}`, `{"field1":"value2","field2":2}`}
    var structs []MyStruct
    
    for _, jsonStr := range jsonStrings {
        var s MyStruct
        json.Unmarshal([]byte(jsonStr), &s)
        structs = append(structs, s)
    }
    
    fmt.Println(structs)
}

这段代码展示了如何将一个包含 JSON 字符串的 slice 动态地 unmarshal 到一个 struct 类型的 slice 中。

回到顶部