111
时间:2019-09-21
本文章向大家介绍111,主要包括111使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
结构体生成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 29 30 | package main import ( "encoding/json" "fmt" ) type IT struct { Company string `json: "-" ` //此字段不会输出到屏幕 //Company string `json:"company"` 这样打印输出别名首字母就会小写(二次编码) Subjects []string `json: "subjects" ` //二次编码 IsOk bool `json: ",string" ` Price float64 `json: ",string" ` } func main() { //定义一个结构体变量,同时初始化 s := IT{ "itcast" , []string{ "Golang" , "PHP" , "Java" , "C++" }, true, 666.666} //编码,根据内容生成json文本 //buf, err := json.Marshal(s) //buf = {"subjects":["Golang","PHP","Java","C++"],"IsOk":"true","Price":"666.666"} buf, err := json.MarshalIndent(s, "" , " " ) //格式化编码 if err != nil { fmt.Println( "err = " , err) return } fmt.Println( "buf = " , string(buf)) } |
1 2 3 4 5 6 7 8 9 10 11 | //结果 buf = { "subjects" : [ //首字母小写 "Golang" , "PHP" , "Java" , "C++" ], "IsOk" : "true" , //string类型 "Price" : "666.666" } |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package main import ( "encoding/json" "fmt" ) type IT struct { Address string `json: "address" ` Languages []string `json: "languages" ` //二次编码 Status bool `json: "isok" ` Price float64 `json: "price" ` } func main() { jsonBuf := ` { "address" : "北京" , "languages" : [ "Golang" , "PHP" , "Java" , "Python" ], "status" : true, "price" : 666.666 }` var tmp IT //定义一个结构体变量 err := json.Unmarshal([]byte(jsonBuf), &tmp) //第二个参数要地址传递 if err != nil { fmt.Println( "err = " , err) return } //fmt.Println("tmp = ", tmp) fmt.Printf( "tmp = %+v\n" , tmp) type IT2 struct { Subjects []string `json: "languages" ` //二次编码 } var tmp2 IT2 err = json.Unmarshal([]byte(jsonBuf), &tmp2) //第二个参数要地址传递 if err != nil { fmt.Println( "err = " , err) return } fmt.Printf( "tmp2 = %+v\n" , tmp2) } |
1 2 | tmp = {Address:北京 Languages:[Golang PHP Java Python] Status:false Price:666.666} tmp2 = {Subjects:[Golang PHP Java Python]} |
Map生成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 | package main import ( "encoding/json" "fmt" ) func main() { //创建一个map m := make( map [string] interface {}, 4) //因为类型多,可以用interface空接口 m[ "address" ] = "北京" m[ "languages" ] = []string{ "Golang" , "PHP" , "Java" , "Python" } m[ "status" ] = true m[ "price" ] = 666.666 //编码成json //result, err := json.Marshal(m) //result = {"address":"北京","languages":["Golang","PHP","Java","Python"],"price":666.666,"status":true} result, err := json.MarshalIndent(m, "" , " " ) if err != nil { fmt.Println( "err = " , err) return } fmt.Println( "result = " , string(result)) } |
1 2 3 4 5 6 7 8 9 10 11 | result = { "address" : "北京" , "languages" : [ "Golang" , "PHP" , "Java" , "Python" ], "price" : 666.666, "status" : true } |
Json转化为Map
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package main import ( "encoding/json" "fmt" ) func main() { jsonBuf := ` { "company" : "itcast" , "subjects" : [ "Go" , "C++" , "Python" , "Test" ], "isok" : true, "price" : 666.666 }` //创建一个map m := make( map [string] interface {}, 4) err := json.Unmarshal([]byte(jsonBuf), &m) //第二个参数要地址传递 if err != nil { fmt.Println( "err = " , err) return } fmt.Printf( "m = %+v\n" , m) // var str string // str = string(m["company"]) //err, 无法转换 // fmt.Println("str = ", str) var str string //类型断言, 值,它是value类型 for key, value := range m { //fmt.Printf("%v ============> %v\n", key, value) switch data := value.( type ) { case string: str = data fmt.Printf( "map[%s]的值类型为string, value = %s\n" , key, str) case bool: fmt.Printf( "map[%s]的值类型为bool, value = %v\n" , key, data) case float64: fmt.Printf( "map[%s]的值类型为float64, value = %f\n" , key, data) case []string: fmt.Printf( "map[%s]的值类型为[]string, value = %v\n" , key, data) case [] interface {}: fmt.Printf( "map[%s]的值类型为[]interface, value = %v\n" , key, data) } } } |
1 2 3 4 | map [address]的值类型为string, value = 北京 map [Languages]的值类型为[] interface , value = [Golang PHP Java Python] map [Status]的值类型为bool, value = true map [price]的值类型为float64, value = 666.666000 |
[]interface{}转json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package main import ( "encoding/json" "fmt" ) func main(){ var s [] interface {} s = append(s,5) s = append(s,[]string{ "Golang" , "PHP" , "Java" , "Python" }) s = append(s, map [string]string{ "hello" : "world" }) result, err := json.MarshalIndent(s, "" , " " ) if err != nil { fmt.Println( "err = " , err) return } fmt.Println( "result = " , string(result)) } |
1 2 3 4 5 6 7 8 9 10 11 12 | result = [ 5, [ "Golang" , "PHP" , "Java" , "Python" ], { "hello" : "world" } ] |
原文地址:https://www.cnblogs.com/fengchuiyizh/p/11562205.html
- CoCreateInstance调用返回代码0x80040154的一种解决方法
- Asp.net页面生命周期
- Premiere&After Effects的实时预览插件开发
- 委托与事件
- 一款批量修改AE模板的工具
- 深入线程
- 【插件开发】—— 2 插件入门
- 线程间通讯:WaitHandler使用实例及分析
- 域名Deskbike.com刚注册没多久就以五位数结拍
- 一起Polyfill系列:Function.prototype.bind的四个阶段
- winform实现拼图游戏
- 一起Polyfill系列:让Date识别ISO 8601日期时间格式
- Oracle 监听器无法启动(TNS-12537,TNS-12560,TNS-00507)
- Javascript Prototypes之旅(A Plain English Guide to JavaScript Prototypes译文)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- c# winform 窗体最大化后挡住了任务栏
- Oracle参数解析(timed_statistics)
- C#将引用的dll嵌入到exe文件中
- C# 软件版本号
- C# 实现登录并跳转界面
- QT 常用控件操作实例集锦
- C# Socket TCP发送图片与接收图片
- ingress通过daemonSet,nodeSelector,hostNetwork方式部署
- Oracle参数解析(event)
- Qt读写文件(2种方式)实现详解
- 字符串匹配 - KMP算法
- c# 判断文件是否发生了变化
- C# 用IrisSkin4.dll美化你的WinForm
- Oracle参数解析(shared_pool_size)
- C# GTS四轴运动控制器实例(固高科技步进电机不带编码器)