Go-json 实例

环境: Win7_x64 + go1.6.2 


package mainimport "encoding/json"
import "fmt"
import "os"//  我们使用两个结构体来演示自定义数据类型的JSON数据编码和解码。
type Response1 struct {Page   intFruits []string
}
type Response2 struct {Page   int      `json:"page"`Fruits []string `json:"fruits"`
}func main() {// 首先我们看一下将基础数据类型编码为JSON数据bolB, _ := json.Marshal(true)fmt.Println(string(bolB))intB, _ := json.Marshal(1)fmt.Println(string(intB))fltB, _ := json.Marshal(2.34)fmt.Println(string(fltB))strB, _ := json.Marshal("gopher")fmt.Println(string(strB))// 这里是将切片和字典编码为JSON数组或对象slcD := []string{"apple", "peach", "pear"}slcB, _ := json.Marshal(slcD)fmt.Println(string(slcB))mapD := map[string]int{"apple": 5, "lettuce": 7}mapB, _ := json.Marshal(mapD)fmt.Println(string(mapB))// JSON包可以自动地编码自定义数据类型。结果将只包括自定义// 类型中的可导出成员的值并且默认情况下,这些成员名称都作// 为JSON数据的键res1D := &Response1{Page:   1,Fruits: []string{"apple", "peach", "pear"}}res1B, _ := json.Marshal(res1D)fmt.Println(string(res1B))// 你可以使用tag来自定义编码后JSON键的名称res2D := &Response2{Page:   1,Fruits: []string{"apple", "peach", "pear"}}res2B, _ := json.Marshal(res2D)fmt.Println(string(res2B))// 现在我们看看解码JSON数据为Go数值byt := []byte(`{"num":6.13,"strs":["a","b"]}`)// 我们需要提供一个变量来存储解码后的JSON数据,这里// 的`map[string]interface{}`将以Key-Value的方式// 保存解码后的数据,Value可以为任意数据类型var dat map[string]interface{}// 解码过程,并检测相关可能存在的错误if err := json.Unmarshal(byt, &dat); err != nil {panic(err)}fmt.Println(dat)// 为了使用解码后map里面的数据,我们需要将Value转换为// 它们合适的类型,例如我们将这里的num转换为期望的float64num := dat["num"].(float64)fmt.Println(num)// 访问嵌套的数据需要一些类型转换strs := dat["strs"].([]interface{})str1 := strs[0].(string)fmt.Println(str1)// 我们还可以将JSON解码为自定义数据类型,这有个好处是可以// 为我们的程序增加额外的类型安全并且不用再在访问数据的时候// 进行类型断言str := `{"page": 1, "fruits": ["apple", "peach"]}`res := &Response2{}json.Unmarshal([]byte(str), &res)fmt.Println(res)fmt.Println(res.Fruits[0])// 上面的例子中,我们使用bytes和strings来进行原始数据和JSON数据// 之间的转换,我们也可以直接将JSON编码的数据流写入`os.Writer`// 或者是HTTP请求回复数据。enc := json.NewEncoder(os.Stdout)d := map[string]int{"apple": 5, "lettuce": 7}enc.Encode(d)
}


运行结果:

E:\program\go\src\hw>go run h1.go
hello
{"Name":"Alice","Body":"Hello","Time":23} <nil>E:\program\go\src\hw>go run h1.go
true
1
2.34
"gopher"
["apple","peach","pear"]
{"apple":5,"lettuce":7}
{"Page":1,"Fruits":["apple","peach","pear"]}
{"page":1,"fruits":["apple","peach","pear"]}
map[num:6.13 strs:[a b]]
6.13
a
&{1 [apple peach]}
apple
{"apple":5,"lettuce":7}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将文件流blob或文件file读取成url

let url URL.createObjectURL(file.raw) //将文件转化成url//或者let url URL.createObjectURL(blob) //将文件流转化成url 注意这个blob一般是通过读取后端接口文件流 设置 responseType: blob 然后返回得到的blob

20145228 《信息安全系统设计基础》第0周学习总结

阅读博客感想 •经过上学期几个月的JAVA学习&#xff0c;收获的不仅仅是JAVA知识&#xff0c;更多的是我们自学一门课程的方法和能力。学习知识也不是死学&#xff0c;勤动手&#xff0c;多练习才是至关重要的。 •当处于健身教练和健身员的师生关系时&#xff0c;才是学习效率…

解决vue-pdf报错TypeError: Cannot read properties of undefined (reading ‘catch‘)

使用vue-pdf插件后&#xff0c;报错 解决方法&#xff1a;找到node_modules/vue-pdf/src/pdfjsWrapper.js文件&#xff0c;注释掉下面的代码

go 线程同步

代码来源于《Go语言开发教程》 // 线程同步: sync.Mutexpackage mainimport ("errors""fmt""sync" )type MyMap struct {mp map[string]intmutex *sync.Mutex }func (this *MyMap) Get(key string) (int, error) {this.mutex.Lock()i, ok : t…

中小企业如何提高售前,售中,售后客服质量?

企业产品出现差评、售后、维权、退款等售后问题总是让客服人员头疼&#xff0c;而且这些差评对企业的影响却日益重要&#xff0c;但是任何事情都是把双刃剑&#xff0c;处理好这些售后问题&#xff0c;不但会提升客户满意度&#xff0c;还会在这些售后问题中&#xff0c;总结出…

XMLHttpRequest 的 responseType 属性详解

XMLHttpRequest.responseType 属性是一个枚举类型的属性&#xff0c;返回响应数据的类型。它允许我们手动的设置返回数据的类型。如果我们将它设置为一个空字符串&#xff0c;它将使用默认的"text"类型。 当将responseType设置为一个特定的类型时&#xff0c;你需要确…

go 打印当前时间

go打印当前时间&#xff0c;Format好奇葩&#xff01; // 打印当前时间package mainimport ("fmt""time" )func main() {fmt.Println(time.Now().Format("2006-01-02 15:04:05")) }运行结果&#xff1a; E:\program\go\src\hw>go run h1.go 2…

electron打包

1、全局安装electron-packager npm install -g electron-packager 2、在项目目录下执行命令 electron-packager ./ --platformwin32 --archia32--platform 是发布平台win32指windows平台 linux darwin--archia32 指32位windows 64位的则为x64 3 notice package.json里面的name字…

WPR-007:WPF中窗体的透明设置

一般使用WindowStyle&#xff0c;Background&#xff0c;AllowsTransparency&#xff0c;Opacity来进行设置。 1、设置Opacity控制整个窗口的透明&#xff0c;包括上面的控件 Window x:Class"TestTransparentWindow.MainWindow" xmlns"http://schemas.m…

element中el-input无法输入

element 的 el-input 组件&#xff0c;由于组件嵌套了层次&#xff0c;导致组件无法及时刷新 解决办法&#xff1a; 使用 input &#xff0c;在输入时进行强制刷新 <el-input input"forceUpdate" v-model"status" placeholder"请输入状态">…

浅谈项目管理中的四要素

项目管理一直是一个老生常谈的问题&#xff0c;我们身边项目时时刻刻发生&#xff0c;大到火箭上天&#xff0c;小到家庭装修。老K作为技术出身&#xff0c;大大小小也做了不下50个项目&#xff0c;这里老K从IT的角度&#xff0c;带领大家用理论的知识分享如何做好一个项目。 …

万立快速开发平台——软件制作大师

万立快速开发平台&#xff0c;是一款国内最好用的快速开发平台&#xff0c;使用者不需要懂技术&#xff0c;不用写代码&#xff0c;可以快速地开发出强大的管理软件&#xff0c;例如ERP&#xff0c;OA&#xff0c;CRM&#xff0c;HRM等等软件。 万立快速开发平台&#xff0c;能…

Memcached缓存在.Net 中的使用(memcacheddotnet)

From: http://www.cnblogs.com/xibei666/p/4863604.html 缓存对于提高大数据量的网站性能无疑不是一个很好的解决方案&#xff0c;针对缓存的使用网上同仁介绍很多&#xff0c;再次我仅仅分享一下自己对Memcached使用的简单介绍。Memchached的使用通过第三方DLL来完成&#xff…

js获取节点的DOM操作

一直感觉DOM节点什么的乱七八糟的不能理解&#xff0c;可能博客也没办法写清楚&#xff0c;只能把知道的一些信息大致写下来慢慢再补充了。 HTML DOM类型 Node类型 Javascript中的所有节点类型都继承自Node类型&#xff0c;因此所有节点类型都共享着相同的基本属性和方法。 除I…

git合并代码冲突

场景&#xff1a;多人共同更改同一文件代码时候&#xff0c;可能回引发代码冲突。此时需要选择某一方或者双方代码进行合并。 采用当前更改&#xff1a;就是保留本地修改。 采用传入的更改&#xff1a;就是选择线上已有的覆盖更改。 保留双方更改&#xff1a;就是两份都保存。

[转]T4模版引擎之基础入门

本文转自&#xff1a;http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额&#xff0c;T4好陌生的名字&#xff0c;和NuGet一样很悲催&#xff0c;不为世人所熟知&#xff0c;却又在背后默默无闻的奉献着&#xff0c;直到现在我们项目组的人除了我之外&#x…

请问WCF 跟 WebService之间异同

From: http://tommyhu.cn/wcf-WebService-qu-bie/ 问题&#xff1a; WCF与 Web Service的区别是什么&#xff1f; 和ASP.NET Web Service有什么关系&#xff1f; WCF与ASP.NET Web Service的区别是什么&#xff1f; 这是很多.NET开发人员容易搞错的问题。面试的时候也经常遇到…

报错 Cannot read properties of undefined (reading ‘ajax‘); Cannot read property ‘ajax‘ of undefined

jQuery中使用ajax发送请求&#xff0c;报错 Cannot read properties of undefined (reading ajax)&#xff1b; Cannot read property ajax of undefined 错误代码 $.ajax({type:"POST",url:"pageServlet",data:jsonData,dataType:"json",succe…

「初步」Spring与commons的BeanUtil.copyProperties

2019独角兽企业重金招聘Python工程师标准>>> ###org.apache.commons.beanutils.BeanUtils 的是 public static void copyProperties(Object dest, Object orig) throws###org.​springframework.​beans.​BeanUtils 的是 public static void copyProperties(Object…

WCF技术剖析之十一:异步操作在WCF中的应用(上篇)

From: http://www.cnblogs.com/artech/archive/2009/07/08/1519423.html 按照操作执行所需的资源类型&#xff0c;我们可以将操作分为CPU绑定型&#xff08;CPU Bound&#xff09;操作和I/O绑定型&#xff08;I/O Bound&#xff09;操作。对于前者&#xff0c;操作的执行主要利…