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
    }
    

      

  • 相关阅读:
    poj 3666 Making the Grade
    poj 3186 Treats for the Cows (区间dp)
    hdu 1074 Doing Homework(状压)
    CodeForces 489C Given Length and Sum of Digits...
    CodeForces 163A Substring and Subsequence
    CodeForces 366C Dima and Salad
    CodeForces 180C Letter
    CodeForces
    hdu 2859 Phalanx
    socket接收大数据流
  • 原文地址:https://www.cnblogs.com/nulige/p/10265713.html
Copyright © 2011-2022 走看看