001-Go JSON处理
在golang中提供的encoding/json包可以编码JSON以及解码JSON数据。
1、编码JSON
使用json包中的Marshal函数进行编码,源码如下:
func Marshal(v interface{}) ([]byte, error) {
e := &encodeState{}
err := e.marshal(v, encOpts{escapeHTML: true})
if err != nil {
return nil, err
}
return e.Bytes(), nil
}
(1)将一个结构体转码JSON
package main import(
"encoding/json"
"fmt"
) type User struct{
Name string `json:"name"`
Age int `json:"age,omitempty"`
Address string `json:"-"`
} func main(){
user := []User{
User{"张三", , "山东青岛"},
User{"李四", , "山东潍坊"},
} if data, err := json.Marshal(user); err == nil{
fmt.Println(string(data))
}
}
输出结果:
[{"name":"张三","age":23},{"name":"李四","age":22}]
说明:json包在解析结构体时,如果遇到key为json的字段标签,则会按照一定规则解析该标签:第一个出现的是字段在JSON串中使用的名字,之后为其他选项,例如omitempty指定空值字段不出现在JSON中。如果整个value为"-",则不解析该字段。
(2)将一个map类型转换为JSON字符串
package main import(
"encoding/json"
"fmt"
) func main(){
student := make(map[string] interface{}) student["no"] = ""
student["name"] = "张三"
student["course"] = []string{
"语文","数学","英语",
} if data,err := json.Marshal(student); err == nil{
fmt.Println(string(data))
} }
输出结果:
{"course":["语文","数学","英语"],"name":"张三","no":""}
2、解码JSON
(1)JSON转换map
package main import(
"encoding/json"
"fmt"
) func main(){ data := `{"course":["语文","数学","英语"],"name":"张三","no":""}` var student = make(map[string] interface{}) err := json.Unmarshal([]byte(data), &student) if err == nil {
fmt.Println(student["no"])
fmt.Println(student["name"])
fmt.Println(student["course"])
}
}
注意此处student["course"],不是切片,也不是数组,如果遍历的话会提示:type interface {} does not support indexing。
(2)JSON转结构体
package main import(
"encoding/json"
"fmt"
) type Student struct{
Name string `json:"name"`
No string `json:"no"`
Course []string `json:"course"`
} func main(){ data := `{"course":["语文","数学","英语"],"name":"张三","no":""}` var student Student err := json.Unmarshal([]byte(data), &student) if err == nil {
fmt.Println(student.No)
fmt.Println(student.Name) for index,value := range student.Course {
fmt.Printf("%d-->%s\n", index, value)
}
}
}
001-Go JSON处理的更多相关文章
- 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍
爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...
- 14_CXF发布REST服务
[rest服务] REST服务是一种软件架构模式,只是一种风格.REST服务采用HTTP做传输协议. REST对于HTTP的利用分为以下两种: 一.资源定位 REST要求对方资源定位更加准确,如下: ...
- 使用CXF开发JAX-RS类型的WebService
1.JAXRSServerFactoryBean编程方式 访问方式:http://localhost:8080/cxf_spring_rest_server/ws/rest/student/query ...
- Kafka部署安装
一.环境准备 1.jdk 8+ 2.zookeeper 3.kafka 说明:在kafka较新版本中已经集成了zookeeper,所以不用单独安装zookeeper,只需要在kafka文件目录中启动z ...
- 【JS】#001 JS定义对象写法(原型、JSON方式)
下面主要写两种 JS 定义对象的 常用写法 写法1:[很像面向对象语言中的写法] function zhongxia(age) { this.age = age; } zhongxia.name = ...
- spring mvc返回json字符串的方式
spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json 优点:不需要自己再处理 步骤一:在spring- ...
- JSON字符串和JS对象之间的转换
JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eva ...
- .net 实体类与json转换(.net自带类库实现)
注意要点. 1.jsonhelp编写时候添加的引用.System.Runtime.Serialization.Json; 2.实体类需声明为public jsonhelp代码: using Syste ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- Delphi Json
superobject.pas单元对json的解析非常方便, 力荐 下面演示对如下json的解析 { ", "memo": "S.H.E 004" } ...
随机推荐
- Android之TextView部分颜色变动
public class StringHandleExampleActivity extends Activity { /** Called when the activity is first cr ...
- Android之代码创建布局
大概描述一下效果:最外层是一个 RelativeLayout 里面有自定义个LinearLayout,每个LinearLayout有两个TextView.that's it !!! private v ...
- ScrollView滚动条的各种设置
ScrollView滚动条不显示:android:scrollbars="none"ScrollView滚动条恒显示:android:fadeScrollbars="fa ...
- 【转】group_concat函数详解
转自: http://hchmsguo.iteye.com/blog/555543 问了好多人,都不知道group_concat这个函数. 这个函数好啊,能将相同的行组合起来,省老事了. MySQL中 ...
- django的数据库操作
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中,ORM在业务逻辑层和数据库层之间充当了桥梁的作用. django的交互式shell python manage ...
- Cesium中导入三维模型方法(dae到glft/bgltf) 【转】
http://blog.csdn.net/l491453302/article/details/46766909 目录(?)[+] Cesium中目前支持gltf和bgltf两种格式.“gltf是kh ...
- asp.net网站发布
1.iis里面新建一个网站,目录可以新建(例如:F:\dotNetWeb),还可以创建子文件夹如:F:\dotNetWeb\my,网站路径是可以自己设置的,也可以使用IIS默认的网站. 2.vs201 ...
- 代码提示级别设置 inspection
配置文件 profile [ˈproʊfaɪl] n.侧面; 外形,轮廓; 人物简介; vt.描-的轮廓; 给-画侧面图; inspection [ɪnˈspɛkʃən] n.检验; 检查; 视察; ...
- GPS精度因子(GDOP,PDOP,HDOP,VDOP,TDOP)
PDOP:位置精度因子(Position Dilution of Precision),直译为“精度强弱度”,通常翻译为“相对误差”.具体含义是:由于观测成果的好坏与被测量的人造卫星和接收仪间的几何形 ...
- Gridview 单选效果实现,且用且珍惜
Gridview 单选效果,在androidapp中实现非常频繁,我这里提供我的一种思路,这是我的思维导图: 怎么样将这样的思维导图翻译成java代码了,请看下面的代码了: // 电子产品的图片列表信 ...