編碼
結構體 -> json
package main
import (
"encoding/json"
"fmt"
)
type IT struct {
Company string
Subjects []string
IsOk bool
Price float64
}
func main() {
t1 := IT{"lianshi",[]string{"Go","Python","Java"},true,998.08}
b, err := json.MarshalIndent(t1,""," ")
fmt.Printf("%T\n",b)
if err !=nil{
fmt.Println("json err",err)
}
fmt.Printf(string(b))
}
字典 -> json
package main
import (
"encoding/json"
"fmt"
)
func main(){
m := make(map[string]interface{})
m["Name"] = "sun"
m["Age"] = 33
m["Score"] = []int{100,100,98}
m["Addr"] = "內蒙古自治區"
slice, err := json.MarshalIndent(m,"","\t" )
if err != nil {
fmt.Println("json 轉換失敗",err)
}
fmt.Println(string(slice))
}
解碼
json -> 結構體
package main
import (
"encoding/json"
"fmt"
)
type Student struct {
Name string `json:"name"`
Addr string `json:"addr"`
Age int `json:"age"`
Score []int `json:"score"`
}
func main() {
slice :=[]byte(`{
"Addr": "內蒙古自治區",
"Age": 33,
"Name": "sun",
"Score": [
100,
100,
98
]
}
`)
var student Student
err := json.Unmarshal(slice,&student)
if err != nil{
fmt.Println("失敗")
} else {
fmt.Printf("%+v\n",student)
}
}
json -> 字典
package main
import (
"encoding/json"
"fmt"
)
func main() {
slice :=[]byte(`{
"Addr": "內蒙古自治區",
"Age": 33,
"Name": "sun",
"Score": [
100,
100,
98
]
}
`)
var i interface{}
err := json.Unmarshal(slice,&i)
if err != nil{
fmt.Println(err)
} else {
fmt.Println(i)
}
m := i.(map[string]interface{})
fmt.Println(m)
fmt.Printf("%T\n",m)
fmt.Println(m["Name"])
for _, v := range m {
switch val := v.(type) {
case string:
fmt.Println("string:", val)
case float64:
fmt.Println("float64", val)
case []interface{}:
for i, value := range val {
fmt.Println(i, value)
fmt.Printf("%T\n",value)
}
}
}
}