结构体转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数据相互转换的更多相关文章

  1. 【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 ...

  2. php:数组与json数据相互转换

    1.数组转json $json=json_encode(数组名) 数组转json字符串 2,json转数组 $arr=json_decode(json字符串,[true]) 不加true第一次转直接转 ...

  3. go语言json技巧

    go语言json技巧 本文总结了在项目中遇到的那些关于go语言JSON数据与结构体之间相互转换的问题及解决办法. 基本的序列化 首先我们来看一下Go语言中json.Marshal()(系列化)与jso ...

  4. JSON数据的解析和生成(Swift)

    Codable public typealias Codable = Decodable & Encodable public protocol Decodable {} public pro ...

  5. Swift语言中如何使用JSON数据教程

    这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial Swift语言中如何使用JSO ...

  6. 在 Swift 语言中更好的处理 JSON 数据:SwiftyJSON

    SwiftyJSON能够让在Swift语言中更加简便处理JSON数据. With SwiftyJSON all you have to do is: ? 1 2 3 4 let json = JSON ...

  7. EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

  8. 使用Go语言访问JSON数据(gojsonq)

    使用Go语言访问JSON数据(gojsonq) 主要是使用第三方的库 gojsonq,来查询JSON数据 例如这样的JSON数据 { "name":"computers& ...

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

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

随机推荐

  1. 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 ...

  2. spring-boot-starter-druid

    i have found from the document, and seems that spring-boot only support tomcat-jdbc,HikariCP and DBC ...

  3. SVN客户端和服务器端下载地址

    https://sourceforge.net/projects/tortoisesvn/files/1.9.7/Application/TortoiseSVN-1.9.7.27907-x64-svn ...

  4. 两个标签页定位第二个标签页元素时显示element not visible

    问题描述 web页面有两个标签页, 当转换到第二个标签页定位元素时, 显示element not visible. 代码 ... //省略 WebElement ele= browser.getEle ...

  5. logger.go

    package app //日志接口 type Logger interface {     Output(maxdepth int, s string) error }

  6. nsq源码阅读笔记之nsqd(四)——Channel

    与Channel相关的代码主要位于nsqd/channel.go, nsqd/nsqd.go中. Channel与Topic的关系 Channel是消费者订阅特定Topic的一种抽象.对于发往Topi ...

  7. 使用Eclipse远程调试

    在一般的开发中,有事因为项目需要,测试环境是在Linux下,这是如果出现异常或者bug,调试起来都是很费劲的,如果你还在为这个头疼,那就好好看接下来的总结 1,启动改程序时,不论是脚本启动,还是tom ...

  8. 【BZOJ 4031】: [HEOI2015]小Z的房间

    题目大意: 给一个n×m的网格,“.”表示可联通,求该网格可构成的生成树个数在1E9的剩余系中的结果.(n,m<=9) 题解: 忘了删注释WA了两遍…… 直接建图+MartrixTree定理即可 ...

  9. CentOS7 配置SVN服务器

    也可以参考这里:https://jingyan.baidu.com/article/148a1921d84be34d71c3b18f.html 1.安装svn yum install -y subve ...

  10. Text-CNN-文本分类-keras

    Text CNN 1. 简介 TextCNN 是利用卷积神经网络对文本进行分类的算法,由 Yoon Kim 在 "Convolutional Neural Networks for Sent ...