七叶笔记 » golang编程 » golang对json最复杂数据格式解析案例

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
成都
 

相关文章