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" } ...
随机推荐
- C#编程(二十八)----------泛型类的功能
泛型类的功能 在创建泛型类时,还需要一些其他的C#关键字.例如,不能把null赋予泛型类型.此时,可以使用default关键字.如果泛型类型不需要object类的功能,但需要调用泛型类上的某些特定方法 ...
- resin 4.0.xx 版破解方法
how to crack resin 4.0.2x resin 4.0.3x. 工具:jd http://jd.benow.ca/ 利用jd打开resin 4.0.xx目录下的lib/pro.jar ...
- 《Python自然语言处理》
<Python自然语言处理> 基本信息 作者: (美)Steven Bird Ewan Klein Edward Loper 出版社:人民邮电出版社 ISBN:97871153 ...
- POI Excel 合并数据相同的行
import java.io.Serializable; /** * POI Excel报表导出,列合并实体<br> * * @author WQ * */ public class Po ...
- [Web 前端] td长度固定,内容过长,超过部分用省略号代替
cp from : https://blog.csdn.net/bsh_csn/article/details/51829103 html的table表格中td长度固定,当内容过长时,超过部分用省略号 ...
- 【转】ubuntu apt-get update 失败解决
FROM : http://blog.csdn.net/ronghua_liu/article/details/8609450 当运行apt-get update后出现如下错误时:E: Some in ...
- [转]Sphinx+Mysql+中文分词安装-实现中文全文搜索
From : http://blog.csdn.net/lgm252008/article/details/5373436 1.什么是SphinxSphinx 是一个在GPLv2 下发布的一个全文检索 ...
- 5句mysql语句
显示表的结构: mysql> DESCRIBE MYTABLE; 往表中加入记录 mysql> insert into MYTABLE values ("hyq",&q ...
- B. Random Teams(Codeforces Round 273)
B. Random Teams time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 大型Web 网站 Asp.net Session过期你怎么办
在 WEB 系统中, 我们一般会用session来保存一些简单但是却很重要的信息.比如Asp.net中经常会用Session来保存用户登录信息,比如UserID.为了解决 WEB场大家采用了把sess ...