全栈编程

Balance $ 2,317
Item Sold 1230
文章作者: 全栈编程@luboke.com
版权声明: 本文章为go语言体系课视频教程配套电子书,版权归 全栈编程@luboke.com所有,欢迎免费学习,转载必须注明出处!但禁止任何商业用途,否则将受到法律制裁!

package main

import (
	"encoding/json"
	"fmt"
)

type Post struct {
	Id      int
	Content string
	Author  string
}

func main()  {
	post := &Post{1, "Hello World", "userA"}
	b, err := json.Marshal(post)
	if err != nil {
		fmt.Println(nil)
	}
	fmt.Println(string(b))

	c,err := json.MarshalIndent(post,"","\t")
	if err != nil {
		fmt.Println(nil)
	}
	fmt.Println(string(c))

	// slice -> json
	s := []string{"a", "b", "c"}
	d, _ := json.MarshalIndent(s, "", "\t")
	fmt.Println(string(d))

	// map -> json
	m := map[string]string{
		"a":"aa",
		"b":"bb",
		"c":"cc",
	}
	e,_ := json.MarshalIndent(m,"","\t")
	fmt.Println(string(e))

	type Post struct {
		Id      int      `json:"ID"`
		Content string   `json:"content"`
		Author  string   `json:"-"`   //`json:"-"`来表示本字段不转换为json数据,即使这个字段名首字母大写
		Label   []string `json:"label"`
		Pubat   int `json:"_,"` //如果想要json key的名称为字符"-",则可以特殊处理`json:"-,"`,也就是加上一个逗号
		Omit    int `json:"omit,omitempty"` //如果tag中带有,omitempty选项,那么如果这个字段的值为0值,即false、0、""、nil等,这个字段将不会转换到json中
		Str 	bool `json:"str,string"` //如果字段的类型为bool、string、int类、float类,而tag中又带有,string选项,那么这个字段的值将转换成json字符串
	}


	postp := &Post{
		2,
		"Hello World",
		"userB",
		[]string{"linux", "shell"},
		1,
		0,
		true,
	}

	p, _ := json.MarshalIndent(postp, "", "\t")
	fmt.Println(string(p))



}

                                    
文章作者: 全栈编程@luboke.com
版权声明: 本文章为go语言体系课视频教程配套电子书,版权归 全栈编程@luboke.com所有,欢迎免费学习,转载必须注明出处!但禁止任何商业用途,否则将受到法律制裁!
copyright © 2020 全栈编程@luboke.com