(三十八)golang--json(对切片、map、结构体进行序列化)
JSON(javascript object notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。key-val
JSON是在2001年开始推广的数据格式,目前已成为主流的数据格式。
JSON易于机器解析和生成,并有效地提升网络传输效率。通常程序在网络传输时会先将数据(结构体、map)等序列化成json字符串,到接收方得到json数据时,再反序列化恢复成原来的数据类型。这种方式已成为各个语言的标准。
要解析成json格式,struct里面的字段必须大写!!!不然解析出来的是{}
因为Json包相当于一个外包,字段大写才能被其调用。。。
package main import (
"encoding/json"
"fmt"
) type monster struct {
Name string
Age int
Birthday string
Sal float64
Skill string
} func testStruct() {
m := monster{
Name: "牛魔王",
Age: ,
Birthday: "1994-09-18",
Sal: 10000.0,
Skill: "牛魔拳",
}
//序列化
data, err := json.Marshal(&m)
if err != nil {
fmt.Println("序列化失败,error=", err)
}
fmt.Printf("序列化之后的结果:%v\n", string(data))
} func testMap() {
var a map[string]interface{}
a = make(map[string]interface{})
a["name"] = "孙悟空"
a["age"] =
a["address"] = "水帘洞"
a["skill"] = "七十二变"
data, err := json.Marshal(a)
if err != nil {
fmt.Println("序列化失败,error=", err)
}
fmt.Printf("序列化之后的结果:%v\n", string(data))
} func testSlice() {
var slice []map[string]interface{}
var m1 map[string]interface{} m1 = make(map[string]interface{})
m1["name"] = "孙悟空"
m1["age"] =
m1["address"] = "水帘洞"
m1["skill"] = []string{"七十二变", "如意金箍棒"}
slice = append(slice, m1)
var m2 map[string]interface{} m2 = make(map[string]interface{})
m2["name"] = "猪八戒"
m2["age"] =
slice = append(slice, m2)
data, err := json.Marshal(slice)
if err != nil {
fmt.Println("序列化失败,error=", err)
}
fmt.Printf("序列化之后的结果:%v\n", string(data))
} func testFloat64() {
var a float64
a = 0.987
data, err := json.Marshal(a)
if err != nil {
fmt.Println("序列化失败,error=", err)
}
fmt.Printf("序列化之后的结果:%v\n", string(data))
} func main() {
testStruct()
testMap()
testSlice()
testFloat64()
}

要想序列化成小写的,只需要用tag指定即可:

对普通数据类型进行序列化是没意义的,只是相当于转换成string类型。

(三十八)golang--json(对切片、map、结构体进行序列化)的更多相关文章
- Golang Json文件解析为结构体工具-json2go
代码地址如下:http://www.demodashi.com/demo/14946.html 概述 json2go是一个基于Golang开发的轻量json文件解析.转换命令行工具,目前支持转换输出到 ...
- NeHe OpenGL教程 第三十八课:资源文件
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Java进阶(三十八)快速排序
Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...
- SQL注入之Sqli-labs系列第三十八关、第三十九关,第四十关(堆叠注入)
0x1 堆叠注入讲解 (1)前言 国内有的称为堆查询注入,也有称之为堆叠注入.个人认为称之为堆叠注入更为准确.堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新 的查询或者终止查询,可以达到修改数据 ...
- 微信小程序把玩(三十八)获取设备信息 API
原文:微信小程序把玩(三十八)获取设备信息 API 获取设备信息这里分为四种, 主要属性: 网络信息wx.getNetWorkType, 系统信息wx.getSystemInfo, 重力感应数据wx. ...
- 《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)
1.简介 理想很丰满现实很骨感,在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就 ...
- Golang面向对象编程-struct(结构体)
Golang面向对象编程-struct(结构体) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是面向对象编程 面向对象编程(Object Oriented Program ...
- Golang通过反射拼接一个结构体所有字段
golang通过反射拼接一个结构体所有字段 需求 将一个结构体所有字段以"|"连接拼接成字符串 golang 不同类型拼接成string使用Sprintf比较麻烦,如果一个结构体有 ...
- bp(net core)+easyui+efcore实现仓储管理系统——入库管理之二(三十八)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
随机推荐
- Mybaits 源码解析 (二)----- 根据配置文件创建SqlSessionFactory(Configuration的创建过程)
我们使用mybatis操作数据库都是通过SqlSession的API调用,而创建SqlSession是通过SqlSessionFactory.下面我们就看看SqlSessionFactory的创建过程 ...
- 后缀数组(SA)
学习了LRJ神犇的代码.orz. 首先真心建议了解下基数排序!!且要有一定的c++程序经验,否则程序很难看懂. 然后对着下面的程序调试(假装你已经会了算法思想) 弄个一个礼拜一下午就能学会了. 该算法 ...
- python3 requests_html 爬取智联招聘数据(简易版)
PS重点:我回来了-----我回来了-----我回来了 1. 基础需要: python3 基础 html5 CS3 基础 2.库的选择: 原始库 urllib2 (这个库早些年的用过,后来淡忘了) ...
- 微信小程序中的canvas基础应用
学了东西还是要记录一下,刚入职的小萌新啊,运气好分到一个项目不是很急的组原以为时间多了可以多学一些东西,但是发现好像不知道从哪里开始下手,我太南了.... 看旁边的实习生同事一直在搞canvas,自己 ...
- char 、signed char、unsigned char
看如下代码: char c = -1; signed char sc = -1; unsigned char uc = -1; printf("c=%d, sc=%d, uc=%d, cx= ...
- intellij idea - Project Structure 项目结构详解(简单明了)
IDEA Project Structure 设置 可以点击 按钮,或者使用快捷键 Ctrl + Shift + Alt + S 打开 Project Structure .如下如所示: 项目的左 ...
- Go语言入门:Hello world
本文是「vangoleo的Go语言学习笔记」系列文章之一. 官网: http://www.vangoleo.com/go/go-hello-world/ 在上一篇文章你好,Go语言中,我们对Go语言的 ...
- CTR@DeepFM
1. DeepFM算法 结合FM算法和DNN算法,同时提取低阶特征和高阶特征,然后组合.FM算法负责对一阶特征及由一阶特征两两组合成的二阶特征进行特征提取:DNN算法负责对由输入的一阶特征进行全连接等 ...
- 洛谷P3121 【[USACO15FEB]审查(黄金)Censoring (Gold)】
双栈+AC自动机 这题其实跟一道KMP算法的题有一些渊源,它就是这道题的简单板. Clear: 给你两个串A,B,每次在B串中从左到右找串A,并将该子串删除,直到找不到为止,问你能删几次. 样例输入: ...
- [考试反思]0907NOIP模拟测试39:角落
题比较简单,但是做的非常烂. T1是个愚蠢的找规律组合数快速幂,数组开小了(看错数据范围) T2题目保证联通没看见,hack掉了正解. T3也挺蠢的,但是打乱了,思路不是很清晰导致丢了50分. 只能说 ...