go struct转json
时间: 2023-12-07 09:03:26 浏览: 142
可以使用标准库中的`encoding/json`包将Go结构体转换为JSON。使用`json.Marshal()`函数可以将结构体转换为JSON格式的字符串,使用`json.Unmarshal()`函数可以将JSON格式的字符串转换为结构体。
示例:
```
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "John", Age: 30}
// struct to json
b, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(b))
// json to struct
var p2 Person
err = json.Unmarshal(b, &p2)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(p2)
}
```
输出:
```
{"Name":"John","Age":30}
{John 30}
```
注意: 结构体的字段需要是可导出的(首字母大写)才能被转换成json
相关问题
golang struct转string类型
可以使用json包中的Marshal函数将struct转换为string类型。示例代码如下:
```
import (
"encoding/json"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "Tom", Age: 28}
b, _ := json.Marshal(p)
s := string(b)
println(s)
}
```
注意,转换过程可能会出现错误,因此最好进行错误处理。
go struct转map
struct 转 map 的方法有很多, 你可以使用第三方库如 "encoding/json" 来达到这个目的.
在 json 包中, 可以使用 json.Marshal() 将 struct 转换为 json 数据, 然后使用 json.Unmarshal() 将 json 数据转换为 map。
示例代码如下:
```
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Tom", Age: 18}
b, _ := json.Marshal(p)
var m map[string]interface{}
json.Unmarshal(b, &m)
fmt.Println(m)
}
```
运行后会得到:
```
map[Age:18 Name:Tom]
```
或者使用反射:
```
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func struct2map(obj interface{}) map[string]interface{} {
t := reflect.TypeOf(obj)
v := reflect.ValueOf(obj)
var data = make(map[string]interface{})
for i := 0; i < t.NumField(); i++ {
data[t.Field(i).Name] = v.Field(i).Interface()
}
return data
}
func main() {
p := Person{Name: "Tom", Age: 18}
m := struct2map(p)
fmt.Println(m)
}
```
运行后会得到:
```
map[Age:18 Name:Tom]
```
还有很多第三方库可以使用, 比如 "github.com/mitchellh/mapstructure"
阅读全文