Golang - 处理json
Golang - 处理json
1. 编码json
使用json.Marshal()函数可以对一组数据进行JSON格式的编码
func Marshal(v interface{}) ([]byte, error)
通过结构体生成json,结构体属性字段名首字母要大写
package main import (
"encoding/json"
"fmt"
) type Person struct {
Name string
Hobby string
} func main() {
p := Person{"luhan", "男"}
//1.生成JSON文本
b, err := json.Marshal(p)
if err != nil {
fmt.Println("json err:", err)
}
fmt.Println(string(b))
//2.生成格式化json,没啥用
b, err = json.MarshalIndent(p, "", " ")
if err != nil {
fmt.Println("json err:", err)
}
fmt.Println(string(b))
}
struct tag
-是隐藏字段
也可以直接写别名,包含首字母小写的单词
通过map生成json
package main
import (
"encoding/json"
"fmt"
)
func main() {
//创建map
mmp := make(map[string]interface{})
mmp["name"] = "luhan"
mmp["age"] = 56
mmp["niubility"] = true
//map转为json
mjson, err := json.Marshal(mmp)
if err != nil {
fmt.Println("json err:", err)
}
fmt.Println(string(mjson))
}
2. 解码json
解析到结构体
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Hobby string `json:"hobby"`
}
func main() {
//1.准备一段json
b := []byte(`{"Name":"luhan","Hobby":"男"}`)
//2.声明结构体
var p Person
//3.解析
err := json.Unmarshal(b, &p)
if err != nil {
fmt.Println("json err:", err)
}
fmt.Println(p)
}
解析到interface
package main
import (
"encoding/json"
"fmt"
)
func main() {
//1.准备一段json
b := []byte(`{"Name":"luhan","Hobby":"男"}`)
//2.声明空接口
var i interface{}
//3.解析
err := json.Unmarshal(b, &i)
if err != nil {
fmt.Println("json err:", err)
}
//自动转map
fmt.Println(i)
//4.使用interface的json,可以判断类型
m := i.(map[string]interface{})
for k, v := range m {
switch vv := v.(type) {
case string:
fmt.Println(k, "是string类型", vv)
case int:
fmt.Println(k, "是int类型", vv)
default:
fmt.Println(k, "是其他类型")
}
}
}
Golang - 处理json的更多相关文章
- 48 【golang】json的效率
本文将主要做如下几方面的测试: 1,构造一个[100]struct的数组,然后来测试它的json编码后的字符串 或者([]byte),首先关心它的功能是否正常: 2,在很早之前,我们在使用golang ...
- Go_14:GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
- Golang 处理 Json(二):解码
golang 编码 json 还比较简单,而解析 json 则非常蛋疼.不像 PHP 一句 json_decode() 就能搞定.之前项目开发中,为了兼容不同客户端的需求,请求的 content-ty ...
- Golang 处理 Json(一):编码
JSON 是一种数据格式描述语言.以 key 和 value 构成的哈系结构,类似 Javascript 中的对象,python 中的字典.通常 json 格式的 key 是字符串,其值可以是任意类型 ...
- GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
- golang解析json报错:invalid character '\x00' after top-level value
golang解析json报错:invalid character '\x00' after top-level value 手动复制字符串:{"files":["c:/t ...
- golang webservice[ json Martini webframe]
golang webservice[ json Martini webframe] https://github.com/brunoga/go-webservice-sample 自己修改了一下例子, ...
- Golang的json包
encoding/json encoding/json是官方提供的标准json, 实现RFC 7159中定义的JSON编码和解码.使用的时候需要预定义struct,原理是通过reflection和in ...
- Golang解析json的几种方法
Golang解析json的几种方法 概要 使用Golang调用其它平台API接口时总会被多层的json串给恶心到,我记录一下自己解析json的几种方法. 一.自带的json包 func JsonUnm ...
随机推荐
- POJ 2375 Cow Ski Area(强连通)
POJ 2375 Cow Ski Area id=2375" target="_blank" style="">题目链接 题意:给定一个滑雪场, ...
- centos下配置防火墙port失败
问题:将规则加入到防火墙中.总是port无法开启 (1)改动文件 首先vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603 Android系统Recovery工作原理之使用update.zip ...
- E20170902-hm
devise v. 设计; 想出; 发明; 策划; n. 遗赠; 遗赠的财产; 遗赠的条款; device n. 设备
- python 实现线程之间的通信
前言:因为GIL的限制,python的线程是无法真正意义上并行的.相对于异步编程,其性能可以说不是一个等量级的.为什么我们还要学习多线程编程呢,虽然说异步编程好处多,但编程也较为复杂,逻辑不容易理解, ...
- python 9:list.reverse()(倒置原列表,可恢复改变)
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] print(bicycles) bicycles.reverse() #倒置原列 ...
- CentOS7 搭建Kafka(一)zookeeper篇
CentOS7 搭建Kafka(一)zookeeper篇 近几年当红小生Kafka备受各路英雄好汉追捧,一点不比老前辈RabbitMQ和ActiveMQ差,因为流行,所以你就得学啊:我这么懒,肯定是不 ...
- 猜拳游戏项目(涉及知识点Scanner、Random、For、数组、Break、Continue等)
package day03.d3.xunhuankongzhi; import java.util.Scanner; public class CaiQuan { public static void ...
- 使用MALTAB标定实践记录
记录一下整个相机的标定矫正过程,希望能够帮助到刚学习标定的童鞋们- 首先下载matlab calibration toolbox,百度搜索第一条就是了(http://www.vision.caltec ...
- # --with-http_sub_module模块
作用: http内容替换 语法 第一种语法: sub_filter string:要替换的内容 替换后的内容 这个模块只能替换第一个匹配的字符串,如果需要匹配全部替换,则用到下面的第三种语法配置 第二 ...