go的json输出

栏目: Go · 发布时间: 5年前

// code_030_JSON_key_value project main.go
package main

import (
    "encoding/json"
    "fmt"
)

//Go语言内建对JSON的支持。
//使用 Go 语言内置的encoding/json 标准库,开发者可以轻松使用Go程序生成和解析JSON格式的数据

type IT struct {
    Company  string
    Subjects []string
    IsOk     bool
    Price    float64
}

type University struct {
    //ID         int      //所学专业的ID
    Name string `json:"-"` //大学名称
    //Department string   //系
    //Major      string   //专业
    //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输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出,所以必须通过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))
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Visual Thinking

Visual Thinking

Colin Ware / Morgan Kaufmann / 2008-4-18 / USD 49.95

Increasingly, designers need to present information in ways that aid their audiences thinking process. Fortunately, results from the relatively new science of human visual perception provide valuable ......一起来看看 《Visual Thinking》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具