這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Go產生json和解json資料都很簡單,通過官方的“encoding/json”包,調用json.Marshal( )產生資料,調用json.Unmarshal( )或json.NewDecoder.Decode( )解析資料。
package mainimport ("encoding/json""fmt""io""os""strings")type Order struct { Name string `json:name` OrderItem []Item `json:item` OrderRefund []Refund `json:refund`}type Item struct { Name string `json:name` Oid int `json:oid`}type Refund struct { Name string `json:name` Item int `json:item` Content string `json:content` Imgs string `json:imgs` Status string `json:status`}// json轉結構體func jsonToStruct() {const jsonStream = `{"Id": 11, "Name": "a"}{"Id": 22, "Name": "b"}{"Id": 33, "Name": "c"}{"Id": 44, "Name": "d"}{"Id": 55, "Name": "e"}`dec := json.NewDecoder(strings.NewReader(jsonStream))for {var m Messageerr := dec.Decode(&m)if err == io.EOF {break} else if err != nil {fmt.Println(err)} else {fmt.Printf("%d: %s\n", m.Id, m.Name)}}}// 結構體轉jsonfunc structToJson() {var m Order m.Name = "10010" m.OrderItem = append(m.OrderItem, Item{Ono: "Shanghai_Hourse", Oid: 1}) m.OrderItem = append(m.OrderItem, Item{Ono: "Beijing_Hourse", Oid: 2}) for i := 1; i < 6; i++ { str := []byte("Things") 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)}func main() {jsonToStruct()structToJson()}