package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"path"
)
func main(){
data := map[string]interface{}{
"FirstName":"Jan",
"Sex":18,
}
stu,_ := json.Marshal(&data)
reader := bytes.NewReader(stu)
fmt.Println(reader)
fmt.Println(stu)
fmt.Println(data)
//content := readFileFrompath("./test.json")//文件方式
//_ = json.Unmarshal(content, &f)
content :=`{"FirstName":"Jan","LastName":"Kersschot","Addresses":[{"Type":"private","City":"Aartselaar","Country":"Belgium"},{"Type":"work","City":"Boom","Country":"Belgium"}],"Remark":"none","acc":{"Type":"private","City":"Aartselaar","Country":"Belgium"}}`//字符串方式
var f interface{}
_ = json.Unmarshal([]byte(content), &f)
m := f.(map[string]interface{})
fmt.Println(f)
/*方式1*/
if m["acc"] !="" {
acc := m["acc"].(map[string]interface{})
fmt.Println(acc["City"])
}
if m["Addresses"] != ""{
Addresses :=m["Addresses"].([]interface{})
fmt.Println(Addresses)
for k,v := range Addresses {
row := v.(map[string]interface{})
fmt.Println(k,v,row["City"],row["Country"],row["Type"])
}
}
/*方式2*/
for k,v := range m{
switch v.(type) {
case []interface{}:
rows :=v.([]interface{})
for sk,sv :=range rows{
son :=sv.(map[string]interface{})
for tk,tv :=range son{
fmt.Println("k:",k,"----sk:",sk,"----tk:",tk,"----tv:",tv)
}
}
case map[string]interface{}:
rows :=v.(map[string]interface{})
for sk,sv :=range rows {
fmt.Println("k:",k,"----sk:",sk,"----sv:",sv)
}
default:
fmt.Println("k:",k,"----v:",v)
}
}
}
/*读取文件内容*/
func readFileFrompath(path string) []byte {
content, err := ioutil.ReadFile(path)
if err != nil {
log.Println(err)
}
return content
}