当前位置: 首页 > news >正文

海棠网站注册郑州企业网站排行

海棠网站注册,郑州企业网站排行,中国空间站和国际空间站对比,广东网站优化目录 何为JSON 编码JSON 实践时刻 解码JSON 实践时刻 延伸拓展 何为JSON JSON (JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。JSON最初是JavaScript的一部分#xff0c;后由于便于快速编写的特性#xff0c;被开发者独立出来。基本上所有的语…目录 何为JSON  编码JSON 实践时刻 解码JSON 实践时刻 延伸拓展 何为JSON  JSON (JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。JSON最初是JavaScript的一部分后由于便于快速编写的特性被开发者独立出来。基本上所有的语言都支持JSON数据的编码和解码。对于网络编程而言JSON的重要性不言而喻。 JSON中的键以字符串存储值可以取任意类型。 它有以下三种结构: 字符串或数组类型{name:Mark,age:18}JSON数组[{name: Tom,age:18},{name:Jerry,age:17}]嵌套类型{name: Tom, birthday:{month:12,day:25}} 大括号“{}”用来描述一组“不同类型的无序键值对集合”,方括号“[]”用来描述一组“相同类型的有序数据集合”。 编码JSON GO的标准库提供了 encoding/json 来处理JSON。涉及到的接口有以下几种 func Marshal(v interface{}) ([]byte, error) Marshal函数要求提供一个接口类型的参数通常interface{}类型会用结构体和map等数据结构来传入。 还有一种JSON编码接口提供格式化输出的操作 func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) MarshalIndent是Marshal的升级版可以按照所设计的特定格式进行格式化输出。其中prefix参数用于对每字段进行标记分隔。 实践时刻 代码示例 /* ------------------------------------------------------------------------------- FILE map2json.go- AUTHOR MAX TSANG- EMAIL ZIHANTSANGHOTMAIL.COM- DATE 2023/07/23 16:46:43- BRIEF MAP2JSON------------------------------------------------------------------------------ */package mainimport (encoding/jsonfmt )func main() {data_map : make(map[string]interface{}, 5)data_map[name] Markdata_map[sex] maledata_map[age] 24data_map[birth] 1998-01-01data_map[Education] []string{Bachelor,Master}res, _ : json.Marshal(data_map) //_对error信息省略res_format, _ : json.MarshalIndent(data_map, , )fmt.Println(result , string(res))fmt.Println(result with format , string(res_format)) } 输出结果 除此之外我们还可以用结构体struct来与JSON进行互转 * 一般情况下推荐都使用结构体struct来进行编解码操作 代码示例 /* ------------------------------------------------------------------------------- FILE struct2json.go- AUTHOR MAX TSANG- EMAIL ZIHANTSANGHOTMAIL.COM- DATE 2023/07/23 16:51:22- BRIEF STRUCT2JSON------------------------------------------------------------------------------ */package mainimport (encoding/jsonfmt )type Resume struct {Name string json:name Sex string json:sex Age int json:age Education []string json:education Inservice bool json:inservice }func main() {resume : Resume{Mark, female, 24,[]string{bachelor,master}, false}res, err : json.MarshalIndent(resume, , )if err ! nil {fmt.Println(err)}fmt.Println(result , string(res)) } 输出结果 在编辑struct字段时可以在字段后添加标签来控制编解码的过程。控制字段有以下三种 - : 不解析该字段omitempty : 当字段为空或长度为0(map array string等结构)时不解析FieldName: 解析JSON时使用该名称 在代码示例中的name sex age ... 这些都属于FieldName 解码JSON 在对JSON解码时标准库提供了Unmarshal接口。 func Unmarshal(data []byte, v interface{}) error Unmarshal函数解析JSON时需要传入一个接口类型的参数而写入接口有以下类型 数据类型对照关系Bool对应JSON布尔类型float64对应JSON数字类型string对应JSON字符串类型[]interface{}对应JSON数组map[string]interface{}对应JSON对象nil对应JSON的null 当JSON值与给出的目标类型不匹配或JSON输出的值超出写入目标类型的范围内Unmarshal会自动跳过该字段并完成其余的解码操作 。 实践时刻 代码示例 /* ------------------------------------------------------------------------------- FILE json2map.go- AUTHOR MAX TSANG- EMAIL ZIHANTSANGHOTMAIL.COM- DATE 2023/08/09 12:24:07- BRIEF JSON2MAP------------------------------------------------------------------------------ */ package mainimport (encoding/jsonfmt )func main() {//一串模拟Json文本js : {name:Mark,sex:male,age:24,birth:1998-01-01,Education:[Bachelor,Master] }m : make(map[string]interface{}, 5)err : json.Unmarshal([]byte(js), m) //将json解码并传至mif err ! nil {fmt.Println(err)}fmt.Println(map , m)for k, v : range m {switch data : v.(type) /*类型值.(type)可以取到其数据类型*/ {case string:fmt.Printf(map[%s]的值类型为stringvalue %s\n, k, data)case []string:fmt.Printf(map[%s]的值类型为[]stringvalue %v\n, k, data)case float64:fmt.Printf(map[%s]的值类型为intvalue %f\n, k, data)case bool:fmt.Printf(map[%s]的值类型为boolvalue %t\n, k, data)case []interface{}:fmt.Printf(map[%s]的值类型为[]interface{}value %v\n, k, data)}} }输出结果 不难发现解码json时若采用map结构则需对值的数据类型进行判断才可正确进行输出调用。struct结构体相较于map可以很好解决这类问题JSON库也会自动对结构体的类型进行解析无需进行类型判断。 代码示例 /* ------------------------------------------------------------------------------- FILE json2struct.go- AUTHOR MAX TSANG- EMAIL ZIHANTSANGHOTMAIL.COM- DATE 2023/08/09 12:42:12- BRIEF JSON2STRUCT------------------------------------------------------------------------------ */ package mainimport (encoding/jsonfmt )type Resume2 struct {Name string json:nameSex string json:sexAge int json:ageEducation []string json:educationInservice bool json:inservice }func main() {js : {name:Mark,sex:male,age:24,education:[Bachelor,Master],Inservice:false }var resume Resume2err : json.Unmarshal([]byte(js), resume)if err ! nil {fmt.Println(err)}fmt.Printf(resume %v, resume)}输出结果 延伸拓展 Go所提供的标准 encoding/json 可以满足我们基本的对于JSON的编码、解码操作但性能上并不是最佳有一个性能更好的开源项目- Fastjson 可以帮助我们解决这个问题。如果感兴趣可以到GitHub上查找该项目
http://www.hkea.cn/news/14343330/

相关文章:

  • 网站建设能赚很多钱带m开头的网站怎么做
  • 想做一个自己设计公司的网站怎么做的做汽车保养的网站
  • 微信网站需要域名吗域名提供商
  • 天空在线网站建设内蒙古建设厅网站删除
  • 手机可以建网站吗wordpress访问局域网
  • 郑州 做网站大连建设工程信息网档案下载
  • 电子政务网站系统企业网站管理系统(多语言)
  • 如何查询网站开发语言海南app网站建设
  • 单页网站开发费用企业网站程序下载
  • 音乐外链网站怎么用自己的电脑做网站主机
  • 南京网站设计公司有哪些公司济宁seo营销
  • 建网站的域名是什么意思广州品牌网站建设公司
  • 建立网站ftp是什么网站301定向
  • 做网站需要什么工具wordpress图片自动alt
  • 贺州网站seo网站 mysql数据库 字符
  • 广州网站外包可以打开所有网站的浏览器
  • 做物流网站找哪家好软文代写自助发稿平台
  • 织梦网站如何播放mp4有人利用婚恋网站做微商
  • 网站中数据库教程wordpress会员设置
  • 在北京做兼职哪个网站好推广网络营销案例
  • 多语种 小语种网站推广方法wordpress设定密码
  • 怎么做直播网站揭阳做网站建设公司
  • 专业网站建设空间wordpress没有路径
  • 建网站什么赚钱九维品牌设计
  • 东莞品牌网站建设费用工商登记注册身份验证app
  • 网站设计制作是什么十大基本营销方式
  • 泰安手机网站建设公司网页设计师需要掌握的领域
  • 沈阳核工业建设工程总公司网站展馆展厅设计报价
  • 玉山电商网站建设seo优化的内容有哪些
  • 司法公开网站建设情况汇报小说网站编辑怎么做