go的json輸出
摘要:// code_030_JSON_key_value project main.go
package main
import (
"encoding/json"
"fmt"
)
//Go語言內建對JSON的支援。
//使用Go語言內建的encodi...
// code_030_JSON_key_value project main.go package main import ( "encoding/json" "fmt" ) //Go語言內建對JSON的支援。 //使用Go語言內建的encoding/json 標準庫,開發者可以輕鬆使用Go程式生成和解析JSON格式的資料 type IT struct { Companystring Subjects []string IsOkbool Pricefloat64 } type University struct { //IDint//所學專業的ID Name string `json:"-"` //大學名稱 //Department string//系 //Majorstring//專業 //SchoolYear int//學年 IsFullTime bool`json:"isFullTime,string"` //是否全日制 Subjects[]string `json:"subjects"`//主要學科 Tuitionfloat64`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輸出的時候必須注意,只有匯出的欄位(首字母是大寫)才會被輸出,如果修改欄位名,那麼就會發現什麼都不會輸出,所以必須通過struct tag定義來實現。 /*1)欄位的tag是"-",那麼這個欄位不會輸出到JSON 2)tag中帶有自定義名稱,那麼這個自定義名稱會出現在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)) }