您好,登錄后才能下訂單哦!
// code_030_JSON_key_value project main.go
package main
import (
"encoding/json"
"fmt"
)
//Go語言內建對JSON的支持。
//使用Go語言內置的encoding/json 標準庫,開發(fā)者可以輕松使用Go程序生成和解析JSON格式的數(shù)據
type IT struct {
Company string
Subjects []string
IsOk bool
Price float64
}
type University struct {
//ID int //所學專業(yè)的ID
Name string `json:"-"` //大學名稱
//Department string //系
//Major string //專業(yè)
//SchoolYear int //學年
IsFullTime bool `json:"isFullTime,string"` //是否全日制
Subjects []string `json:"subjects"` //主要學科
Tuition float64 `json:"price, omitempty"` //學費
}
func main() {
//JSON的輸出(編碼)
//案例1:json.Marshal的使用
t1 := IT{"tencent", []string{"develop", "unittest", "production", "operative"}, false, 12000.0}
b, err := json.Marshal(t1)
if err != nil {
fmt.Println("json err:", err)
}
fmt.Println(string(b))
//案例2: json.MarshalIndent的使用,用縮進對輸出進行格式化,效果更加json化
t2 := IT{"HuaWei", []string{"develop", "unittest", "production", "operative"}, false, 13000.0}
b2, err := json.MarshalIndent(t2, "", " ")
if err != nil {
fmt.Println("json err:", err)
}
fmt.Println(string(b2))
//案例3:struct tag的使用。--->>> 輸出的時候,顯示為首字母小寫
//JSON輸出的時候必須注意,只有導出的字段(首字母是大寫)才會被輸出,如果修改字段名,那么就會發(fā)現(xiàn)什么都不會輸出,所以必須通過struct tag定義來實現(xiàn)。
/* 1)字段的tag是"-",那么這個字段不會輸出到JSON
? 2)tag中帶有自定義名稱,那么這個自定義名稱會出現(xiàn)在JSON的字段名中
? 3)tag中如果帶有"omitempty"選項,那么如果該字段值為空,就不會輸出到JSON串中
? 4)如果字段類型是bool, string, int, int64等,而tag中帶有",string"選項,那么這個字段在輸出到JSON的時候會把該字段對應的值轉換成JSON字符串
*/
t3 := University{"清華大學", true, []string{"經濟", "法律", "音樂", "美術", "計算機"}, 3000.00}
b3, err := json.MarshalIndent(t3, "", " ")
if err != nil {
fmt.Println("%v\n", err)
}
fmt.Println(string(b3))
//案例4:通過map生成JSON
m1 := make(map[string]interface{})
m1["company"] = "lenovo"
m1["subjects"] = []string{"dev", "test", "pro"}
m1["isok"] = true
m1["salary"] = 15000.00
b4, err := json.Marshal(m1)
if err != nil {
fmt.Println("%v\n", err)
}
fmt.Println(string(b4))
}
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。