在开发过程中经常需要调试打印变量的值,有了串行化、json格式化如虎添翼,好了,上代码
package main
import (
"bytes"
"encoding/json"
"fmt"
"strings"
)
type User struct {
Id int64 `json:"id"`
Name string `json:"name"`
}
func FormatJson(data string) string {
var out bytes.Buffer
json.Indent(&out, []byte(data), "", " ")
return out.String()
}
func SerializeToJson(data interface{}) string {
b, _ := json.Marshal(data)
return string(b)
}
func UnserializeFromJson(data string, result interface{}) error {
d := json.NewDecoder(strings.NewReader(data))
d.UseNumber()
return d.Decode(result)
}
func FormatStruct(data interface{}) string {
result := SerializeToJson(data)
return FormatJson(result)
}
func main() {
var jsonContent = `{"id":1,"name":"test"}`
fmt.Println(FormatJson(jsonContent))
/**/
u := User{
Id: 10,
Name: "golang",
}
fmt.Println(SerializeToJson(u))
/**/
u2 := User{}
UnserializeFromJson(jsonContent, &u2)
fmt.Println(u2)
/**/
fmt.Println(FormatStruct(u2))
}