文档章节

Go struct 2 json

老汉-憨憨
 老汉-憨憨
发布于 2017/05/10 18:58
字数 372
阅读 29
收藏 0
// struct2json project main.go
package main

import (
	"encoding/json"
	"fmt"
)

type Book struct {
	Title       string
	Authors     []string
	Publisher   string
	IsPublished bool
	Price       float32
}

func main() {
	gobook := Book{
		Title:       "Go 语言编程",
		Authors:     []string{"XuShiwei", "HughLv", "XuDaoli"},
		Publisher:   "ituring.com.cn",
		IsPublished: true,
		Price:       9.99,
	}

	b, err := json.Marshal(gobook)
	if err == nil {
		fmt.Println("json = ", string(b))
	} else {
		fmt.Println("json.Marshal err : ", err.Error())
	}
}

输出:

json =  {"Title":"Go 语言编程","Authors":["XuShiwei","HughLv","XuDaoli"],"Publisher":"ituring.com.cn","IsPublished":true,"Price":9.99}
在Go中, JSON转化前后的数据类型映射如下。
 布尔值转化为JSON后还是布尔类型。
 浮点数和整型会被转化为JSON里边的常规数字。
 字符串将以UTF-8编码转化输出为Unicode字符集的字符串,特殊字符比如<将会被转义为
\u003c。
 数组和切片会转化为JSON里边的数组,但[]byte类型的值将会被转化为 Base64 编码后
的字符串, slice类型的零值会被转化为 null。
 结构体会转化为JSON对象,并且只有结构体里边以大写字母开头的可被导出的字段才会
被转化输出,而这些可导出的字段会作为JSON对象的字符串索引。
 转化一个map类型的数据结构时,该数据的类型必须是 map[string]T(T可以是
encoding/json 包支持的任意数据类型)

// 字段输出

type Book struct {
	Title       string
	Authors     []string
	Publisher   string
	IsPublished bool
	Price       float32
}

func (b *Book) String() string {
	return fmt.Sprintf("Title = %s, \nAuthors = %v, \nPublisher = %s, \nIsPublished=%t, \nPrice = %g", b.Title, b.Authors, b.Publisher, b.IsPublished,
		b.Price)
}

/*
  fmt.Println(gobook.String())
*/

https://golang.org/pkg/fmt/

© 著作权归作者所有

上一篇: GO JsonStr 2 obj
下一篇: GO Json 处理(一)
老汉-憨憨
粉丝 20
博文 322
码字总数 68382
作品 0
深圳
程序员
私信 提问
C++中消息自动派发之三 About JSON Encode

《C++ 消息自动派发》系列上篇介绍了IDL解析器,生成的C++代码只支持JSON转C++ struct。 经过新的重构,这次增加了对C++ struct 转JSON的支持。IDL解析器自动为C++ struct生成两个方法。 de...

晨曦之光
2012/06/07
220
0
推荐一款工具可以把 json 转成 go 的 struct

go 这种强类型语言,在 decode json 的时候,一般需要定义一套数据结构用于映射,常用的就是 struct,在没有发现这个工具以前,我都是手写,遇到一些比较大的 json 时候,第一写起来比较恶心...

anoty
2018/10/09
0
0
golang 的 json 处理库--json4g

json4g 是 golang 的 json处理库,方便处理结构复杂的json文档。 json4g 提供了json的简便出来方法 方法介绍 1,LoadByString(string) 参数为json字符串,返回 JsonNode 对象指针 2,NowJson...

donnie-wu
2014/10/31
1K
1
Go struct tag深入理解

前言 Go的struct声明允许字段附带来对字段做一些标记。 该不仅仅是一个字符串那么简单,因为其主要用于反射场景,包中提供了操作的方法,所以写法也要遵循一定的规则。 2. Tag的本质 2.1 Ta...

恋恋美食
2018/09/10
0
0
Go语言之 Struct Tag

在上一篇介绍Go反射的时候,提到了如何通过反射获取Struct的Tag,这一篇文章主要就是介绍这个的使用和原理,在介绍之前我们先看一下JSON字符串和Struct类型相互转换的例子。 上面这个例子就是...

baby神
2018/07/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
5
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
5
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
17
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部