package main

import (
"encoding/json"
"fmt"
) type IT struct { //一定要注意这里的成员变量的名字首字母必须是大写
Company string
Subjects []string
Isok bool
Price float64
} func main() {
s := IT{"zyg", []string{"go", "python", "java"}, true, 3.14}//json的初始化
buf, err := json.Marshal(s)//使用这个函数会返回两个值,通过源码得知
if err != nil {
fmt.Println("err = ", err)
return
}
fmt.Println("buf = ", string(buf)) //注意这里生成的buf是一个byte切片,如果直接打印会是一串数字,这里使用string函数进行转化
}

执行的结果为

buf =  {"Company":"zyg","Subjects":["go","python","java"],"Isok":true,"Price":3.14}

这样可读性不太好,如果用于展示可以使用这个函数

buf, err := json.MarshalIndent(s, "", "    ")

执行的结果就会好看一些

buf =  {
"Company": "zyg",
"Subjects": [
"go",
"python",
"java"
],
"Isok": true,
"Price": 3.14
}

当然这样的结果对于开发数据交换里可以会有问题,比如在Isok那一栏里就有可能别人需要的是“true",而不是true,那这样就可以使用_struct_tag方式

将结构体变更为这样的方式

type IT struct {
Company string `json:"-"` //这样的方式可以让这个头不显示
Subjects []string `json:"subjects"` //这种方式二次编码
Isok bool `json:",string"` //将一栏的值显示为string类型
Price float64
}

执行的结果为

buf =  {
"subjects": [ //这里变更为小写了
"go",
"python",
"java"
],
"Isok": "true", //这里变更为字符串了
"Price": 3.14
} company也没有再显示了

[GO]通过结构体生成json的更多相关文章

  1. go语言之进阶篇通过结构体生成json

    1.通过结构体生成json 示例: package main import ( "encoding/json" "fmt" ) //成员变量名首字母必须大写 t ...

  2. Go语言结构体转json的坑

    Go语言结构体转json的坑 标签(空格分隔): go json.Marshal() JSON输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出, ...

  3. struct2json -- C结构体与 JSON 快速互转库V1.0发布

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhutianlong/article/d ...

  4. Go语言使用匿名结构体解析JSON数据

    手机拥有屏幕.电池.指纹识别等信息,将这些信息填充为 JSON 格式的数据.如果需要选择性地分离 JSON 中的数据则较为麻烦.Go 语言中的匿名结构体可以方便地完成这个操作. 首先给出完整的代码,然 ...

  5. c# 利用结构体获取json数据

    最近做微信支付,要获取用户的openid,调用接口后返回的是json格式的数据,我想在c#后台把数据逐一取出,网上查了查,找到以下方法: 1.首先调用接口,要有一个post数据到指定url并返回数据的 ...

  6. Golang操作结构体、Map转化为JSON

    结构体生成Json package main import ( "encoding/json" "fmt" ) type IT struct { Company ...

  7. Go - Struct 结构体

    目录 概述 声明结构体 生成 JSON 改变数据 推荐阅读 概述 结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合. 声明结构体 //demo_11.go pack ...

  8. C# 结构体和List<T>类型数据转Json数据保存和读取

    C#  结构体和List<T>类型数据转Json数据保存和读取 一.结构体转Json public struct FaceLibrary { public string face_name ...

  9. Go 结构体和map等数据结构转json字符串

    Go语言中使用json包中的 Marshal() 函数将数据结构转成json字符串,源代码: func Marshal(v interface{}) ([]byte, error) { e := ne ...

随机推荐

  1. 10 删除topic中的数据

    1 打开    server.properties2  添加一条:  delete.topic.enable=true 3  执行命令:   bin/kafka-topics.sh --delete ...

  2. 监控服务器所有用户的操作记录(测试只记录root用户)

    在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据.这时 ...

  3. python‘s first day for me

    计算机的基础 1,计算机由硬件及软件组成. 其中硬件主要包括了cpu,内存以及硬盘.软件则由操作系统以及一系列软件. 操作系统则可以操控硬件,使硬件完成一些需要的操作. python的历史 1989年 ...

  4. Running command-line BLAST

    Ubuntu安装BLAST 2014-02-09 10:45:03|  分类: Linux/Ubuntu|举报|字号 订阅     下载LOFTER我的照片书  |     very easy! su ...

  5. Oracle播放多条 INSERT ALL

    Oracle INSERT ALL 语句介绍 Oracle INSERT ALL 语句用来用一个 INSERT 语句添加多行.该行可以只使用一个SQL命令插入到一个表或多个表. 语法 Oracle I ...

  6. svn删除

    [本地删除.然后提交到服务器]与[服务器删除然后本地更新] svn delete svn://路径(目录或文件的全路径) -m “删除备注信息文本” 推荐如下操作: svn delete 文件名 sv ...

  7. swoole学习

    <?php ini_set('default_socket_timeout', -1); class serverEmail { public $serv = null; public func ...

  8. Tkinter Fonts(字体)

    Python GUI - Tkinter Fonts:作为一个tuple的第一个元素是字体家族,一个点的大小,可选择一个字符串,包含一个或更多的粗体,斜体,下划线的样式修饰符,加粗.   最多可能有三 ...

  9. 常用经典SQL语句大全完整版--详解+实例 (存)

    常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012  http://blog.sina.com.cn/s/blog_84 ...

  10. f.lux Ubuntu 下进行安装

    这几天在搞Ubuntu 看的是我眼睛特痛,于是查了一下,有Linux 版的f.lux 于是我就行了一番的安装. 步骤         命令行 1.             sudo add-apt-r ...