golang生成json和解json数据都很简单,通过官方的“encoding/json”包,调用json.Marshal生成()和json.Unmarshal()解数据。
接下来重点讲嵌套的情况下如何生成json,如下:
type AlipayRemoteReqStruct struct{
Ono string `json:ono`
OrderItem []Item `json:item`
OrderRefund []Refund `json:refund`
}
type Item struct{
Ono string `json:ono`
Oid int `json:oid`
}
type Refund struct{
Ono string` json:ono `
Itemint `json:item`
Content string`json:content`
Imgs string`json:imgs`
Status string`json:status`
}
生成Json:
var m AlipayRemoteReqStruct
m.Ono="12345"
m.OrderItem= append(m.OrderItem, Item{Ono:"Shanghai_VPN", Oid:1})
m.OrderItem= append(m.OrderItem, Item{Ono:"Beijing_VPN", Oid:2})
for i :=1; i < 6; i++
{
str := []byte("物品")
str = strconv.AppendInt(str, int64(i),10)
orderi := Item{Ono: string(str), Oid: i}
m.OrderItem= append(m.OrderItem, orderi)}
bytes, _ := json.Marshal(m)
fmt.Printf("json:m,%s\n", bytes)
var js AlipayRemoteReqStruct
err := json.Unmarshal(bytes, &js)
if err != nil { fmt.Printf("format err:%s\n",err.Error()) return}
结果:
json数据:
json:m,{“Ono”:”12345”,
“OrderItem”:[{“Ono”:”Shanghai_VPN”,”Oid”:1},{“Ono”:”Beijing_VPN”,”Oid”:2},{“Ono”:”物品1”,”Oid”:1},
{“Ono”:”物品2”,”Oid”:2},{“Ono”:”物品3”,”Oid”:3},
{“Ono”:”物品4”,”Oid”:4},
{“Ono”:”物品5”,”Oid”:5}],
“OrderRefund”:null}
解出来的数据:
{12345 [{Shanghai_VPN 1} {Beijing_VPN 2} {物品1 1} {物品2 2} {物品3 3} {物品4 4} {物品5 5}] []}