在 GoFrame 中进行结构体切片([]struct)之间的转换,同样可以使用 gconv 包中的方法。以下是一些常见的结构体切片转换操作:

1. 结构体切片转换为 Map 切片:
   - 使用 gconv.ListStruct(objList) 将结构体切片转换为 Map 切片。
package main

import (
"fmt"
"github.com/gogf/gf/frame/g"
)

type User struct {
Id   int
Name string
}

func main() {
userList := []User{
{Id: 1, Name: "John"},
{Id: 2, Name: "Jane"},
}

userMapList := gconv.ListStruct(userList)
fmt.Printf("%+v\n", userMapList)
}

2. Map 切片转换为结构体切片:
   - 使用 gconv.ListStruct(mList, &objList) 将 Map 切片转换为结构体切片。
package main

import (
"fmt"
"github.com/gogf/gf/frame/g"
)

type User struct {
Id   int
Name string
}

func main() {
userMapList := g.Slice{
g.Map{"Id": 1, "Name": "John"},
g.Map{"Id": 2, "Name": "Jane"},
}

var userList []User
err := gconv.ListStruct(userMapList, &userList)
if err == nil {
fmt.Printf("%+v\n", userList)
} else {
fmt.Println(err)
}
}

3. 结构体切片转换为 JSON 字符串切片:
   - 使用 gconv.ListJson(objList) 将结构体切片转换为 JSON 字符串切片。
package main

import (
"fmt"
"github.com/gogf/gf/frame/g"
)

type User struct {
Id   int
Name string
}

func main() {
userList := []User{
{Id: 1, Name: "John"},
{Id: 2, Name: "Jane"},
}

jsonStrList := gconv.ListJson(userList)
fmt.Println(jsonStrList)
}

4. JSON 字符串切片转换为结构体切片:
   - 使用 gconv.ListStruct(jsonStrList, &objList) 将 JSON 字符串切片转换为结构体切片。
package main

import (
"fmt"
"github.com/gogf/gf/frame/g"
)

type User struct {
Id   int
Name string
}

func main() {
jsonStrList := g.Slice{
`{"Id":1,"Name":"John"}`,
`{"Id":2,"Name":"Jane"}`,
}

var userList []User
err := gconv.ListStruct(jsonStrList, &userList)
if err == nil {
fmt.Printf("%+v\n", userList)
} else {
fmt.Println(err)
}
}

这些是在 GoFrame 中进行结构体切片转换的一些基本操作。通过使用 gconv 包提供的方法,可以方便地在不同数据类型之间进行转换。根据实际需求选择合适的转换方法。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7598/GoFrame