golang|golang json、string、struct相互转换
package main
import (
"encoding/json"
"fmt"
"os"
)
type ConfigStruct struct {
Hoststring`json:"host"`
Portint`json:"port"`
AnalyticsFilestring`json:"analytics_file"`
StaticFileVersion int`json:"static_file_version"`
StaticDirstring`json:"static_dir"`
TemplatesDirstring`json:"templates_dir"`
SerTcpSocketHoststring`json:"serTcpSocketHost"`
SerTcpSocketPortint`json:"serTcpSocketPort"`
Fruits[]string `json:"fruits"`
}
type Other struct {
SerTcpSocketHost string`json:"serTcpSocketHost"`
SerTcpSocketPort int`json:"serTcpSocketPort"`
Fruits[]string `json:"fruits"`
}
func main() {
jsonStr := `{"host": "http://localhost:9090","port": 9090,"analytics_file": "","static_file_version": 1,"static_dir": "E:/Project/goTest/src/","templates_dir": "E:/Project/goTest/src/templates/","serTcpSocketHost": ":12340","serTcpSocketPort": 12340,"fruits": ["apple", "peach"]}`
//json str 转map
var dat map[string]interface{}
if err := json.Unmarshal([]byte(jsonStr), &dat);
err == nil {
fmt.Println("==============json str 转map=======================")
fmt.Println(dat)
fmt.Println(dat["host"])
}
//json str 转struct
var config ConfigStruct
if err := json.Unmarshal([]byte(jsonStr), &config);
err == nil {
fmt.Println("================json str 转struct==")
fmt.Println(config)
fmt.Println(config.Host)
}
//json str 转struct(部份字段)
var part Other
if err := json.Unmarshal([]byte(jsonStr), &part);
err == nil {
fmt.Println("================json str 转struct==")
fmt.Println(part)
fmt.Println(part.SerTcpSocketPort)
}
//struct 到json str
if b, err := json.Marshal(config);
err == nil {
fmt.Println("================struct 到json str==")
fmt.Println(string(b))
}
//map 到json str
fmt.Println("================map 到json str=====================")
enc := json.NewEncoder(os.Stdout)
enc.Encode(dat)
//array 到 json str
arr := []string{"hello", "apple", "python", "golang", "base", "peach", "pear"}
lang, err := json.Marshal(arr)
if err == nil {
fmt.Println("================array 到 json str==")
fmt.Println(string(lang))
}
//json 到 []string
var wo []string
if err := json.Unmarshal(lang, &wo);
err == nil {
fmt.Println("================json 到 []string==")
fmt.Println(wo)
}
}
【golang|golang json、string、struct相互转换】转发自@阿修罗王 的回答
推荐阅读
- java|IOS 自动化测试
- Java入门之基础程序设计
- mybatis中数据加密与解密的实现
- Android之Spinner用法详解
- 大数据|二、JDK安装与变量配置
- 算法|2021年图灵奖,花落高性能计算先驱、田纳西大学教授Jack Dongarra
- 数据库|Centos7安装Postgresql11及PostGIS、timescaleDB安装
- Go语言的变量定义详情
- Python进程池基本概念
- 数据库|铁庵(NoSQL、RDS和大数据异构融合实战,详解PostgreSQL FDW功能原理)