go数组结构体 转 json 并打印
时间: 2023-08-08 07:10:12 浏览: 50
好的,以下是一个示例代码,假设我们有一个结构体类型为 `Person`,包含 `Name` 和 `Age` 两个字段,我们将一个 `Person` 数组转换为 JSON 格式并打印出来:
```go
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
persons := []Person{
{Name: "Alice", Age: 20},
{Name: "Bob", Age: 25},
{Name: "Charlie", Age: 30},
}
jsonBytes, err := json.Marshal(persons)
if err != nil {
panic(err)
}
fmt.Println(string(jsonBytes))
}
```
在上面的代码中,我们使用了 Go 内置的 `encoding/json` 包中的 `Marshal` 函数将 `persons` 数组转换为 JSON 格式的字节数组。然后使用 `string` 函数将字节数组转换为字符串格式并打印输出。注意在结构体定义中,我们使用了 `json` 标签为字段指定了在 JSON 中对应的名称。
相关问题
Golang 结构体与 JSON 互相转换
在 Golang 中,我们可以使用内置的 `encoding/json` 包来实现结构体和 JSON 之间的互相转换。
以下是一个示例代码:
```go
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address,omitempty"`
}
func main() {
// 将结构体转换为 JSON
p := Person{Name: "John", Age: 30}
jsonData, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(jsonData))
// 将 JSON 转换为结构体
jsonStr := `{"name":"Mary","age":25}`
var p2 Person
err = json.Unmarshal([]byte(jsonStr), &p2)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(p2.Name, p2.Age, p2.Address)
}
```
运行以上代码,输出如下:
```
{"name":"John","age":30}
Mary 25
```
在结构体定义中,我们使用了 `json` 标记来指定 JSON 中字段的名称。例如,`Name` 字段对应 JSON 中的 `name` 字段。
在将结构体转换为 JSON 时,我们使用了 `json.Marshal()` 函数,它返回一个字节数组。在将 JSON 转换为结构体时,我们使用了 `json.Unmarshal()` 函数。注意,需要将 JSON 字符串转换为字节数组再传递给该函数。
此外,如果结构体中的某些字段在转换为 JSON 时不需要包含在内,我们可以使用 `omitempty` 选项来忽略它们。在上面的例子中,当 `Address` 字段为空时,转换为 JSON 后不会包含该字段。
golang中的结构体json化传入list怎么写
假设有一个结构体定义如下:
```go
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
```
如果要将多个 `Person` 结构体实例组成的列表进行 JSON 序列化,可以使用以下方式:
```go
import (
"encoding/json"
"fmt"
)
func main() {
persons := []Person{
{Name: "Alice", Age: 20},
{Name: "Bob", Age: 25},
}
// 将 persons 列表进行 JSON 序列化
jsonBytes, err := json.Marshal(persons)
if err != nil {
fmt.Println("JSON serialization error:", err)
return
}
// 输出 JSON 字符串
fmt.Println(string(jsonBytes))
}
```
在上述代码中,`json.Marshal()` 函数将 `persons` 列表进行 JSON 序列化,并返回一个字节数组。将字节数组转换成字符串后输出即可。注意,`Person` 结构体中的 `Name` 和 `Age` 字段上使用了 `json` 标签,这样在 JSON 序列化时会使用标签指定的名称。