Go语言JSON数据相互转换
结构体转json
结构体转json示例:
package main
import (
"encoding/json"
"fmt"
)
//用户
type User struct {
UserName string `json:"username"`
NickName string `json:"nickname"`
Age int `json:"age"`
Birthday string `json:"birthday"`
Sex string `json:"sex"`
Email string `json:"email"`
Phone string `json:"phone"`
}
//结构体转JSON
func structToJSON() {
user := User{
UserName: "itbsl",
NickName: "jack",
Age: 18,
Birthday: "2001-08-15",
Sex: "itbsl@gmail.com",
Phone: "176XXXX6688",
}
data, err := json.Marshal(user)
if err != nil {
fmt.Println("json.marshal failed, err:", err)
return
}
fmt.Printf("%s\n", string(data))
}
func main() {
structToJSON()
}
输出结果:
{"username":"itbsl","nickname":"jack","age":18,"birthday":"2001-08-15","sex":"itbsl@gmail.com","email":"","phone":"176XXXX6688"}
map转json
map转json示例:
package main
import (
"encoding/json"
"fmt"
)
//map转json
func mapToJSON(tempMap *map[string]interface{}) string {
data, err := json.Marshal(tempMap)
if err != nil {
panic(err)
}
return string(data)
}
func main() {
tempMap := make(map[string]interface{})
tempMap["username"] = "itbsl"
tempMap["age"] = 18
tempMap["sex"] = "male"
str := mapToJSON(&tempMap)
fmt.Println(str)
}
输出结果:
{"age":18,"sex":"male","username":"itbsl"}
int转json
int转json
package main
import (
"encoding/json"
"fmt"
)
func testInt() {
var age = 100
data, err := json.Marshal(age)
if err != nil {
fmt.Printf("json.marshal failed, err:", err)
return
}
fmt.Printf("%s\n", string(data))
}
func main() {
testInt()
}
输出结果:
100
slice转json
slice转json
package main
import (
"encoding/json"
"fmt"
)
//slice转json
func sliceToJSON(s []map[string]interface{}) string {
data, err := json.Marshal(s)
if err != nil {
panic(err)
}
return string(data)
}
func main() {
var s []map[string]interface{}
tempMap := make(map[string]interface{})
tempMap["username"] = "itbsl"
tempMap["age"] = 18
tempMap["sex"] = "male"
s = append(s, tempMap)
tempMap = make(map[string]interface{})
tempMap["username"] = "jane"
tempMap["age"] = 23
tempMap["sex"] = "female"
s = append(s, tempMap)
str := sliceToJSON(s)
fmt.Println(str)
}
输出结果:
[{"age":18,"sex":"male","username":"itbsl"},{"age":23,"sex":"female","username":"jane"}]
json反序列化为结构体
json转结构体:
package main
import (
"encoding/json"
"fmt"
)
//用户
type User struct {
UserName string `json:"username"`
NickName string `json:"nickname"`
Age int `json:"age"`
Birthday string `json:"birthday"`
Sex string `json:"sex"`
Email string `json:"email"`
Phone string `json:"phone"`
}
//结构体转JSON
func structToJSON() string {
user := User{
UserName: "itbsl",
NickName: "jack",
Age: 18,
Birthday: "2001-08-15",
Sex: "itbsl@gmail.com",
Phone: "176XXXX6688",
}
data, err := json.Marshal(user)
if err != nil {
fmt.Println("json.marshal failed, err:", err)
return ""
}
return string(data)
}
//json转结构体
func JSONToStruct(str string) {
var user User
err := json.Unmarshal([]byte(str), &user)
if err != nil {
panic(err)
}
fmt.Println(user)
}
func main() {
JSONToStruct(structToJSON())
}
输出结果:
{itbsl jack 18 2001-08-15 itbsl@gmail.com 176XXXX6688}
json反序列化为map
json转map
package main
import (
"encoding/json"
"fmt"
)
//map转json
func mapToJSON(tempMap *map[string]interface{}) string {
data, err := json.Marshal(tempMap)
if err != nil {
panic(err)
}
return string(data)
}
func JSONToMap(str string) {
var tempMap map[string]interface{}
err := json.Unmarshal([]byte(str), &tempMap)
if err != nil {
panic(err)
}
fmt.Println(tempMap)
}
func main() {
tempMap := make(map[string]interface{})
tempMap["username"] = "itbsl"
tempMap["age"] = 18
tempMap["sex"] = "male"
str := mapToJSON(&tempMap)
JSONToMap(str)
}
输出结果:
map[age:18 sex:male username:itbsl]
Go语言JSON数据相互转换的更多相关文章
- 【Python】python和json数据相互转换,json读取和写入,repr和eval()使用
python数据转换json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import jso ...
- php:数组与json数据相互转换
1.数组转json $json=json_encode(数组名) 数组转json字符串 2,json转数组 $arr=json_decode(json字符串,[true]) 不加true第一次转直接转 ...
- go语言json技巧
go语言json技巧 本文总结了在项目中遇到的那些关于go语言JSON数据与结构体之间相互转换的问题及解决办法. 基本的序列化 首先我们来看一下Go语言中json.Marshal()(系列化)与jso ...
- JSON数据的解析和生成(Swift)
Codable public typealias Codable = Decodable & Encodable public protocol Decodable {} public pro ...
- Swift语言中如何使用JSON数据教程
这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial Swift语言中如何使用JSO ...
- 在 Swift 语言中更好的处理 JSON 数据:SwiftyJSON
SwiftyJSON能够让在Swift语言中更加简便处理JSON数据. With SwiftyJSON all you have to do is: ? 1 2 3 4 let json = JSON ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- 使用Go语言访问JSON数据(gojsonq)
使用Go语言访问JSON数据(gojsonq) 主要是使用第三方的库 gojsonq,来查询JSON数据 例如这样的JSON数据 { "name":"computers& ...
- Go语言使用匿名结构体解析JSON数据
手机拥有屏幕.电池.指纹识别等信息,将这些信息填充为 JSON 格式的数据.如果需要选择性地分离 JSON 中的数据则较为麻烦.Go 语言中的匿名结构体可以方便地完成这个操作. 首先给出完整的代码,然 ...
随机推荐
- When to use next() and return next() in Node.js
Some people always write return next() is to ensure that the execution stops after triggering the ca ...
- spring-boot-starter-druid
i have found from the document, and seems that spring-boot only support tomcat-jdbc,HikariCP and DBC ...
- SVN客户端和服务器端下载地址
https://sourceforge.net/projects/tortoisesvn/files/1.9.7/Application/TortoiseSVN-1.9.7.27907-x64-svn ...
- 两个标签页定位第二个标签页元素时显示element not visible
问题描述 web页面有两个标签页, 当转换到第二个标签页定位元素时, 显示element not visible. 代码 ... //省略 WebElement ele= browser.getEle ...
- logger.go
package app //日志接口 type Logger interface { Output(maxdepth int, s string) error }
- nsq源码阅读笔记之nsqd(四)——Channel
与Channel相关的代码主要位于nsqd/channel.go, nsqd/nsqd.go中. Channel与Topic的关系 Channel是消费者订阅特定Topic的一种抽象.对于发往Topi ...
- 使用Eclipse远程调试
在一般的开发中,有事因为项目需要,测试环境是在Linux下,这是如果出现异常或者bug,调试起来都是很费劲的,如果你还在为这个头疼,那就好好看接下来的总结 1,启动改程序时,不论是脚本启动,还是tom ...
- 【BZOJ 4031】: [HEOI2015]小Z的房间
题目大意: 给一个n×m的网格,“.”表示可联通,求该网格可构成的生成树个数在1E9的剩余系中的结果.(n,m<=9) 题解: 忘了删注释WA了两遍…… 直接建图+MartrixTree定理即可 ...
- CentOS7 配置SVN服务器
也可以参考这里:https://jingyan.baidu.com/article/148a1921d84be34d71c3b18f.html 1.安装svn yum install -y subve ...
- Text-CNN-文本分类-keras
Text CNN 1. 简介 TextCNN 是利用卷积神经网络对文本进行分类的算法,由 Yoon Kim 在 "Convolutional Neural Networks for Sent ...