golang對json最複雜數據格式解析案例

package main
import (
"encoding/json"
"fmt"
)
//必須對外可以訪問 public
type JsonOne struct {
Title string ;
Server []string ;
}
//必須對外可以訪問 public
type UU struct {
Key []interface{} `json:"key"`
}
func main() {
//案例一
s:="{\\"s1\\":[\\"天際之戰測試\\",[\\"192.168.6.180:9624\\",\\"192.168.6.180:9624\\"]]}";
fmt.Println("A 第一種.....")
m:=map[string][]interface{}{};
es:=json.Unmarshal([]byte(s),&m);
if(es!=nil){
fmt.Println(es);
}
fmt.Println(m["s1"][0]);
fmt.Println(m["s1"][1]);
sss:=m["s1"][1];
cc:=sss.([]interface{})
fmt.Println(cc[1]);
//案例二
s1:="[232,\\"werw\\",{\\"key\\":[23,\\"成都\\"]}]"
fmt.Println("B 第一種.........")
//第一種
mm:=make([]interface{},0);
ee:=json.Unmarshal([]byte(s1),&mm);
if(ee!=nil){
fmt.Println(ee);
}
fmt.Println(mm[0]);
fmt.Println(mm[1]);
mm2:=mm[2].(map[string]interface{});
mm2v:=mm2["key"].([]interface{});
fmt.Println(mm2v[0]);
fmt.Println(mm2v[1]);
fmt.Println("B 第二種.........")
//第二種
mm1:=make([]interface{},0);
ee1:=json.Unmarshal([]byte(s1),&mm1);
if(ee1!=nil){
fmt.Println(ee);
}
fmt.Println(mm1[0]);
fmt.Println(mm1[1]);
fmt.Println(mm1[2]);
sssrt,eee:=json.Marshal(mm1[2]);
fmt.Println(string(sssrt));
if(eee==nil) {
u:=new(UU);
json.Unmarshal([]byte(string(sssrt)), u);
fmt.Println(u.Key[0]);
fmt.Println(u.Key[1]);
}
}

打印輸出:

A 第一種.....
天際之戰測試
[192.168.6.180:9624 192.168.6.180:9624]
192.168.6.180:9624
B 第一種.........
232
werw
23
成都
B 第二種.........
232
werw
map[key:[23 成都]]
{"key":[23,"成都"]}
23
成都
golang對json最複雜數據格式解析案例


分享到:


相關文章: