Go处理JSON数据的实现
作者:Hejjon 发布时间:2024-02-23 07:44:42
标签:Go,JSON
Go 处理 json数据主要就是使用 json 包下的 Marshal 和 UnMarshal 两个函数。
定义结构体 User
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Height float64 `json:"height"`
Hobbies []string `json:"hobbies"`
}
json 标签定义的名称就是转json时的key
1. 结构体对象转 JSON 字符串
u := User{"张三", 19, 180.0, []string{"篮球", "跑步"}}
bytes, _ := json.Marshal(u) // Marshal函数转成的是 byte 数组
jsonStr := string(bytes) // 通过类型转换将字节数组转成json字符串
fmt.Println(jsonStr)
打印结果如下:
{"name":"张三","age":19,"height":180,"hobbies":["篮球","跑步"]}
2. JSON 字符串转结构体对象
var u2 User // 定义结构体变量接收
jsonStr := `{"name":"张三","age":19,"height":180,"hobbies":["篮球","跑步"]}`
_ = json.Unmarshal([]byte(jsonStr), &u2) // 相反地类型转换将json字符串转成字节数组后 再调用 json.Unmarshal 函数
fmt.Println(u2)
打印结果如下:
{张三 19 180 [篮球 跑步]}
3. 结构体切片转JSON字符串
和对象类型一样,都是调用json包的 Marshal 方法
u1 := User{"张三", 19, 180.0, []string{"篮球", "跑步"}}
u2 := User{"李四", 18, 172.0, []string{"散步", "看书"}}
u3 := User{"王五", 20, 169.0, []string{"篮球", "爬山"}}
u4 := User{"赵六", 21, 158.0, []string{"乒乓球", "涉水"}}
// 定义切片
users := []User{u1, u2, u3, u4}
bytes, _ := json.Marshal(users)
jsonStr := string(bytes)
fmt.Println(jsonStr)
4. JSON字符串(JSON数组)转切片
var users2 []User // 定义结构体切片
_ = json.Unmarshal([]byte(jsonStr), &users2) // 将json数组(字符串)转成结构体切片
fmt.Println(users2)
参数 jsonStr 就是3中转成的json字符串
5. JSON 字符串转Map,不需要定义结构体
jsonStr := `{"name": "zhangsan", "age": 19}`
mp := make(map[string]interface{})
_ = json.Unmarshal([]byte(jsonStr), &mp)
fmt.Println(mp)
fmt.Println(mp["name"]) // zhangsan
// 遍历map
for k, v := range mp {
fmt.Println(k, v)
}
来源:https://blog.csdn.net/qq_42026600/article/details/129037075
0
投稿
猜你喜欢
- 页面域关系:主页面a.html所属域A:www.aspxhome.com被iframe的页面b.html所属域B:www.cidianwan
- MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的
- 看代码~from django.contrib import messages messages.info(request, '要显
- numpy.flip(m, axis=None)Reverse the order of elements in an array alon
- python 循环while和for in简单实例#!/uer/bin/env python# _*_ coding: utf-8 _*_l
- 虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错。Tony Hoare 在19
- Urllib1. Urllib.request.urlopen().read().decode()返回一个二进制的对象,对这个对象进行rea
- 前言在MySQL很多测试场景,需要人工生成一些测试数据来测试。本文提供一个构造MySQL大表存储过程,可以生成包含用户名,手机号码,出生日期
- 目录1. python爬取网易财经不同板块股票数据目标网址:爬虫思路:爬虫代码:2. excel树状图2.1. 简单的树状图2.2. 带有增
- 直接看例子:#!/usr/bin/python# -*- coding: utf-8 -*-from bs4 import Beautifu
- 1. 创建一个新的环境打开Anaconda Navigator,找不到的win10左下角输入一下就能找到了,如下图。这里通过列表下面的cre
- 本文实例为大家分享了python多线程下信号处理程序示例的具体代码,供大家参考,具体内容如下下面是一个网上转载的实现思路,经过验证,发现是可
- 之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用W
- 看代码: HTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi
- 一、pymysql的下载和使用之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢
- 表单介绍说到表单,在HTML中表单的创建时通过<form>标签实现的,在<form>标签内部,字段通过使用<i
- 本文实例讲述了Python实现爬取逐浪小说的方法。分享给大家供大家参考。具体分析如下:本人喜欢在网上看小说,一直使用的是小说下载阅读器,可以
- 网上关于这方面的文章有很多,重复的东西本文不再赘述,仅提供思路,并解释一些其他文章讲述模糊的地方。 1、使用meta标签,这也是普
- 上一章讲数据的处理,这一章讲数据处理之后呈现的结果,即你有可能看到Loss的走向等,这样方便我们调试代码。1.Tensorboard有两个常
- mac用起来还是有很多不方便的地方,app很局限也都不是很好用,mac自带的截图工具,格式是tiff,需要转成jpg才能在代码中使用,利用p