type
status
date
slug
summary
tags
category
icon
password

Marshal

marshal的中文意思是“编码”,“数据打包”的意思

基本操作

编码

json.Marshal(v interface{}) ([]byte, error)
即将一个struct对象序列化成字节数组.

解码

json.Unmarshal(data []byte, v interface{}) error
即将字节数组反序列化成对象
当我们不知道json的具体结构时,可以使用interface{}接口:
var f interface{}err := json.Unmarshal(b, &f)
如果需要访问f则需要先转换成map:
m := f.(map[string]interface{})
然后根据具体的value type进行取值:value.(type).

流式编解码

func NewDecoder(r io.Reader) *Decoderfunc NewEncoder(w io.Writer) *Encoder

编码

func TestBasicEncoder(t *testing.T) { userInfo := UserInfo{Username: "jk", Gender: 1, Age: 18} bytes := new(bytes2.Buffer) err := json.NewEncoder(bytes).Encode(&userInfo) if err != nil { panic(err) } fmt.Println(string(bytes.Bytes())) }

解码

func TestBasicDecoder(t *testing.T) { var userInfo UserInfo str := `{"username":"jk","age":18,"gender":1}` err := json.NewDecoder(strings.NewReader(str)).Decode(&userInfo) if err != nil { panic(err) } fmt.Println(userInfo) }
 
Go-http的简单使用写个简单的短链接服务
姜康
姜康
一个软件工程师
公告
type
status
date
slug
summary
tags
category
icon
password
🎉博客网站重新制作了🎉
👏欢迎更新体验👏