go json解析

ebayboy · · 76 次点击 · · 开始浏览    

package main

import (
        "encoding/json"
        "fmt"
)

type Student struct {
        Name    string
        Age     int
        Guake   bool
        Classes []string
        Price   float32
}

func (s *Student) ShowStu() {
        fmt.Println("show Student :")
        fmt.Println("\tName\t:", s.Name)
        fmt.Println("\tAge\t:", s.Age)
        fmt.Println("\tGuake\t:", s.Guake)
        fmt.Println("\tPrice\t:", s.Price)
        fmt.Printf("\tClasses\t: ")
        for _, a := range s.Classes {
                fmt.Printf("%s ", a)
        }
        fmt.Println("")
}
func main() {
        st := &Student{
                "Xiao Ming",
                16,
                true,
                []string{"Math", "English", "Chinese"},
                9.99,
        }
        fmt.Println("before JSON encoding :")
        st.ShowStu()

        b, err := json.Marshal(st)
        if err != nil {
                fmt.Println("encoding faild")
        } else {
                fmt.Println("encoded data : ")
                fmt.Println(b)
        }
        ch := make(chan string, 1)
        go func(c chan string, str string) {
                c <- str
        }(ch, string(b))
        strData := <-ch
        fmt.Println("--------------------------------")
        stb := &Student{}
        stb.ShowStu()
        err = json.Unmarshal([]byte(strData), &stb)
        if err != nil {
                fmt.Println("Unmarshal faild")
        } else {
                fmt.Println("Unmarshal success")
                stb.ShowStu()
        }
}

76 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
0 回复
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传