Go语言如何进行json解码和编码双向操作
2018-01-29 17:57
459 查看
main.go
执行结果:
package main import ( "encoding/json" "fmt" "io" "log" "os" "strings" ) type Employee struct { ID int Name string Salary float32 } func main() { group := Employee{ ID: 1, Name: "ft", Salary: 7889, } fmt.Println("原编码:",group) //json转码 var jsonBytes []byte = Struct2json(group) fmt.Print("转码后:") os.Stdout.Write(jsonBytes) fmt.Println("") //解码 group = JsonBytes2Struct(jsonBytes) fmt.Println("解码后:",group) //解码json流 fmt.Println("测试json流解码") JsonStream2Struct() } func Struct2json(group interface{}) []byte { b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } return b } //用于解码json数据流 func JsonStream2Struct() { //初始化一个json格式数据流 const jsonStream = ` {"Name": "Ed", "Text": "Knock knock."} {"Name": "Sam", "Text": "Who's there?"} {"Name": "Ed", "Text": "Go fmt."} {"Name": "Sam", "Text": "Go fmt who?"} {"Name": "Ed", "Text": "Go fmt yourself!"} ` //用Message结构来接收单个json对象 type Message struct { Name, Text string } //解码器返回一个装载好内容的Decoder对象 dec := json.NewDecoder(strings.NewReader(jsonStream)) for { var m Message //逐一解入临时变量m里 if err := dec.Decode(&m); err == io.EOF { break } else if err != nil { log.Fatal(err) } //输出 fmt.Printf("%s: %s\n", m.Name, m.Text) } } //将[]byte型的json流,转换成结构体 func JsonBytes2Struct(bt []byte) Employee { var result Employee err := json.Unmarshal(bt, &result) if err != nil { panic(err) } return result }
执行结果:
原编码: {1 ft 7889} 转码后:{"ID":1,"Name":"ft","Salary":7889} 解码后: {1 ft 7889} 测试json流解码 Ed: Knock knock. Sam: Who's there? Ed: Go fmt. Sam: Go fmt who? Ed: Go fmt yourself!
相关文章推荐
- Go语言对JSON进行编码和解码的方法
- javascript用escape编码后如何用php进行解码?
- GO json解码和编码
- 转载:在 Java 中如何进行 BASE64 编码和解码
- Jackson中jsonnode如何进行增加, 修改操作
- 在 Java 中如何进行 BASE64 编码和解码(转)
- Android使用json对中文进行编码 使用php接收时进行解码
- 如何使得中文不被 json_encode 不编码成 unicode PHP 浏览:9722 2014年08月14日 使用 php 自带的 json_encode 函数对数据进行编码时,中文都会变成
- 用Encrypt、Decrypt对密码进行编码和解码操作。
- Java如何进行Base64的编码(Encode)与解码(Decode)?
- 【Java】利用Java对网址进行二维码的编码与解码操作
- 在 Java 中如何进行 BASE64 编码和解码
- 在 Java 中如何进行 BASE64 编码和解码
- Golang 奇葩的时间包之Json与struct对象之间互相转换,JsonDate和JsonTime自定义类型如何实现json编码和解码(二)
- 在 Java 中如何进行 BASE64 编码和解码
- 在 Java 中如何进行 BASE64 编码和解码(有点儿乱,但是不妨碍作为一篇好文)
- 在 Java 中如何进行 BASE64 编码和解码(有点儿乱,但是不妨碍作为一篇好文)
- Python基础-Json编码和解码操作
- Java如何进行Base64的编码(Encode)与解码(Decode)?
- Java中如何进行BASE64编码和解码