Golang Go语言中如何动态的将一个 slice 内的 json 串 unmarshal 到一个 slice 内的 struct 上呢
Golang Go语言中如何动态的将一个 slice 内的 json 串 unmarshal 到一个 slice 内的 struct 上呢
小弟有一个需求,需要通过外部文件获取多个 json 字符串,放在一个[][]bytes 里面。然后将其 unmarshal 到另外一个[]struct 里面。由于 json 有很多种,需要 unmarshal 到不同的 struct 内。想咨询各位大神,有什么优雅的方式,实现一个方法,传入[][]bytes 和 interface{}(实际为各种[]struct),得到 unmarshal 后的[]struct 呢?
更多关于Golang Go语言中如何动态的将一个 slice 内的 json 串 unmarshal 到一个 slice 内的 struct 上呢的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在 Go 语言中,将 slice 内的 JSON 字符串动态地 unmarshal 到一个 slice 内的 struct 上,可以通过以下步骤实现:
-
定义目标 struct:首先,定义一个与 JSON 字符串对应的 struct 类型。
-
初始化目标 slice:创建一个该 struct 类型的 slice,用于存储 unmarshal 后的数据。
-
遍历 JSON slice:使用循环遍历包含 JSON 字符串的 slice。
-
Unmarshal 每个 JSON 字符串:在循环中,使用
encoding/json
包中的Unmarshal
函数,将每个 JSON 字符串 unmarshal 到一个新的 struct 实例中。 -
将 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 中。