zoukankan      html  css  js  c++  java
  • go语言之进阶篇通过结构体生成json

    1、通过结构体生成json

    示例:

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //成员变量名首字母必须大写
    type IT struct {
    	Company  string
    	Subjects []string
    	IsOk     bool
    	Price    float64
    }
    
    func main() {
    	//定义一个结构体变量,同时初始化
    	s := IT{"itcast", []string{"Go", "C++", "Python", "Test"}, true, 666.666}
    
    	//编码,根据内容生成json文本
    	buf, err := json.Marshal(s)
    	if err != nil {
    		fmt.Println("err = ", err)
    		return
    	}
    	fmt.Println("buf = ", string(buf))
    }
    

    执行结果:

    buf =  {"Company":"itcast","Subjects":["Go","C++","Python","Test"],"IsOk":true,"Price":666.666}
    

      

    2、根据结构体生成json

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //成员变量名首字母必须大写
    type IT struct {
    	Company  string
    	Subjects []string
    	IsOk     bool
    	Price    float64
    }
    
    func main() {
    	//定义一个结构体变量,同时初始化
    	s := IT{"itcast", []string{"Go", "C++", "Python", "Test"}, true, 666.666}
    
    	//编码,根据内容生成json文本
    	buf, err := json.MarshalIndent(s, "", "	") //格式化编码
    	if err != nil {
    		fmt.Println("err = ", err)
    		return
    	}
    
    	fmt.Println("buf = ", string(buf))
    }
    

    执行结果:

    buf =  {
    	"Company": "itcast",
    	"Subjects": [
    		"Go",
    		"C++",
    		"Python",
    		"Test"
    	],
    	"IsOk": true,
    	"Price": 666.666
    }
    

      

     3、struct_tag的使用 (通过二次编码,可以把大写变成小写,还可以以字符串方式输出)

    示例: 

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    //成员变量名首字母必须大写
    type IT struct {
    	//Company  string   `json:"-"` //此字段不会输出到屏幕
    
    	//下面的写法都是二次编码,可以把大写变成小写
    	Company  string   `json:"company"`
    	Subjects []string `json:"subjects"`
    	IsOk     bool     `json:"isok"`
    	//转成字符串再输出编码
    	//IsOk  bool    `json:"string"`
    	Price float64 `json:"price"`
    }
    
    func main() {
    	//定义一个结构体变量,同时初始化
    	s := IT{"itcast", []string{"Go", "C++", "Python", "Test"}, true, 666.666}
    
    	//编码,根据内容生成json文本
    	buf, err := json.MarshalIndent(s, "", " ") //格式化编码
    	if err != nil {
    		fmt.Println("err = ", err)
    		return
    	}
    
    	fmt.Println("buf = ", string(buf))
    }
    

    执行结果:

    buf =  {
     "company": "itcast",
     "subjects": [
      "Go",
      "C++",
      "Python",
      "Test"
     ],
     "isok": true,
     "price": 666.666
    }
    

      

  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/nulige/p/10265713.html
Copyright © 2011-2022 走看看