60_通过结构体生成json
Posted zhaopp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了60_通过结构体生成json相关的知识,希望对你有一定的参考价值。
1.json是跨平台.跨语言的数据交换语言
JSON (javascript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成。尽管JSON是JavaScript的一个子集,但JSON采用完全独立于编程语言的文本格式,且表现为键/值对集合的文本描述形式(类似一些编程语言中的字典结构),这使它成为较为理想的、跨平台、跨语言的数据交换语言。
package main
import (
"encoding/json"
"fmt"
)
//通过结构体生成json 文本,其成员变量名必须大写
type People struct
//由于结构体生成json文本成员变量必须大写,可以使用struct_tag来二次编码,此时可以使用小写
Name string `json:"name"`
Subject []string
Isok bool `json:", string"` //转换成字符串类型输出
Price float64 `json:"-"` //不打印
//这时输出的成员变量就是小写
func main()
p1 := People"steven", []string"C++", "Go", "Python", true, 66.66
//编码
res, err := json.Marshal(p1)
if err != nil
fmt.Println("err=", err)
return
//fmt.Println(res)//打印的是[]byte格式
fmt.Println(string(res)) //转换成string类型
//格式化编码,使结构更加清晰
res1, err1 := json.MarshalIndent(p1, "", " ") //第二个参数是空,第三个是缩进
if err != nil
fmt.Println("err1=", err1)
return
fmt.Println(string(res1))
以上是关于60_通过结构体生成json的主要内容,如果未能解决你的问题,请参考以下文章
golang中orm或gorm或json序列化结构体时零值的处理