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

永久免费的网站空间辽宁和生活app下载安装

永久免费的网站空间,辽宁和生活app下载安装,网站开发待遇高吗,wordpress透明化插件关于 JSON 数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也 易于机器解析和生成。RESTfull Api 接口中返回的数据都是 json 数据。 Json 的基本格式如下: { "a": "Hello", "b": "…

关于 JSON 数据

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也
易于机器解析和生成。RESTfull Api 接口中返回的数据都是 json 数据。

Json 的基本格式如下:

{
"a": "Hello",
"b": "World"
}
稍微复杂点的 JSON

 

 结构体与 JSON 序列化

注意一个点:结构体内的私有属性不能被json包访问,如果结构体内部的属性都要就行转换,需要全部为公有属性(开头字符大写)
比如我们 Golang 要给 App 或者小程序提供 Api 接口数据,这个时候就需要涉及到结构体和
Json 之间的相互转换。
Golang JSON 序列化 是指把结构体数据转化成 JSON 格式的字符串;
(结构体 ----> JSON格式字符串)
Golang JSON 的反序列化 是指把 JSON 数据转化成 Golang 中的结构体对象。
(JSON格式字符串 ----> 结构体)

Golang 中 的 序 列 化 和 反 序 列 化 主 要 通 过 "encoding/json" 包 中 的 json.Marshal() json.Unmarshal()方法实现;

结构体对象转化成 Json 字符串

package mainimport ("encoding/json""fmt"
)type Person struct{Name	stringGender	stringAge 	int
}func main() {var p1 = Person{Name: "奥特曼",Gender: "男",Age: 17,}fmt.Printf("%#v\n",p1)jsonByte,_ := json.Marshal(p1)jsonStr := string(jsonByte)fmt.Printf("%#v", jsonStr)}

 错误案例如下:

package mainimport ("encoding/json""fmt"
)type Person struct{Name	stringGender	stringage 	int
}func main() {var p1 = Person{Name: "奥特曼",Gender: "男",age: 17,}fmt.Printf("%#v\n",p1)jsonByte,_ := json.Marshal(p1)jsonStr := string(jsonByte)fmt.Printf("%#v", jsonStr)}

 Json 字符串转换成结构体对象

返回一个err;

如果err为空,转换成功;

err非空,转换失败

package mainimport ("encoding/json""fmt"
)type Person struct{Name	stringGender	stringage 	int
}func main() {var str = `{"Name":"奥特曼","Gender":"男","Age":17}`var p2 Personerr := json.Unmarshal([]byte(str), &p2)if err != nil {  fmt.Println(err)}fmt.Printf("%#v\n", p2)fmt.Println(p2.Name)}

 结构体标签 Tag

Tag 是结构体的元信息,可以在运行的时候通过反射的机制读取出来。
Tag 在结构体字段的后方定义,由一对反引号包裹起来,具体的格式如下:
`key1:"value1" key2:"value2"`
结构体 tag 由一个或多个键值对组成。键与值使用冒号分隔,值用双引号括起来。
同一个结构体字段可以设置多个键值对 tag,不同的键值对之间使用空格分隔。
注意事项: 为结构体编写 Tag 时,必须严格遵守键值对的规则。
结构体标签的解析代码的容错能力很差,一旦格式写错,编译和运行时都不会提示任何错误,通过反射也无法正确取值。
例如不要在 key 和 value 之间添加空格。

 通过指定 tag 实现 json 序列化该字段时的 key

嵌套结构体和 JSON 序列化反序列化 

package mainimport ("encoding/json""fmt"
)
type Person struct{Name	string `json:"name"`Gender	string `json:"gender"`Age 	int		`json:"age"`	
}type Group struct{Intrasting stringPerson []Person
}
func main() {h := Group{Intrasting: "绘画",Person: make([]Person, 0),}for i := 17; i < 20; i++ {p := Person{Name :fmt.Sprintf("编号%v", i),  //字符串类型Gender:"男",Age : i+1,}h.Person = append(h.Person, p) //将P里的东西,添加到实例化的h后的切片内}// fmt.Println(c)strByte, err := json.Marshal(h)if err != nil {fmt.Println(err)} else {strJson := string(strByte)fmt.Println(strJson)}
}

 逆序退回

package mainimport ("encoding/json""fmt"
)type Person struct{Name	string `json:"name"`Gender	string `json:"gender"`Age 	int		`json:"age"`	
}type Group struct{Intrasting stringPerson []Person
}func main() {jsonStr := `{"Intrasting":"绘画","Person":[{"name":"编号17","gender":"男","age":18},{"name":"编号18","gender":"男","age":19},{"name":"编号19","gender":"男","age":20}]}`var h = &Group{}err := json.Unmarshal([]byte(jsonStr), h)if err != nil {fmt.Println(err)} else {fmt.Printf("%#v\n", h)fmt.Printf("%v", h.Intrasting)}
}

 

http://www.bjxfkj.com.cn/article/110532.html

相关文章:

  • wordpress 乱码太原seo优化公司
  • 张店网站开发招聘html5网页模板代码
  • 网站建设竞价托管外包张楚岚
  • 做警员编号网站大气宽屏的网站
  • 爱站网关键词长尾挖掘工具seo推广代理
  • 网页制作搜题软件seo和sem的概念
  • 网站建设在线建站哪些作弊网站
  • 针对网站开发者的问答网站网站建设运维策划
  • 大连网站制作中企动力网上营销怎么做
  • 招标网站哪个好用高端定制外贸网站
  • 南京seo网站建设费用沈阳哪家医院人流做得最好
  • 网站顶部悬浮广告代码wordpress 明星主题
  • 江海区建设局网站南充网站网站建设
  • 绿色食品网站模板.htm成品网站w在线观看
  • 高质量网站内容建设标准如何增加网站关键词密度
  • seo网站优化师个人备案挂企业网站
  • 网站 建设 流行 数据库网站开发和软件开发含义
  • 创造网站软件广告版面设计图大全
  • 南通如何制作一个网站成都网站设计合理柚v米科技
  • 做百度手机网站点网站建设若干意见
  • 网站搭建实训总结站长工具综合权重查询
  • 阿里云怎么做静态网站扬州专业做网站企业
  • 网站建设属于行政那个模块文化网站设计经典案例
  • 京东网站设计特点旅游电子商务网站建设与研究
  • 网站建设与实现的要求与务郑州seo外包平台
  • 闸北网站优化公司做网站还有希望吗
  • 自动化优化系统网站建设wordpress安装不上主题
  • 百度网站做不做wordpress 售后 插件
  • 一般网站建设多少钱阿里巴巴网站建设论文
  • 福州火车站最新消息建设银行沈阳分行网站