关键词:
目录
Json 文件
// rabbitmq_queues.json
"queues": [
"name": "001",
"vhost": "/test",
"durable": true,
"auto_delete": false,
"arguments":
"x-dead-letter-exchange": "dlx-fanout-test-exchange",
"x-dead-letter-routing-key": "001",
"x-queue-type": "classic"
,
"name": "dlx-001",
"vhost": "/test",
"durable": true,
"auto_delete": false,
"arguments":
"x-queue-type": "classic"
]
已知或固定的 json 结构解析
推荐一个好用的 json 和 golang struct 转换的网站:https://oktools.net/json2go
Example code
- 先读取文件,将文件转为 []byte 类型
- 通过 jsoniter 包解析
package main
import (
"bytes"
"fmt"
jsoniter "github.com/json-iterator/go"
"io"
"os"
)
func main()
//jsoniter.Unmarshal()
var rq rabbitMqQueues
jsonContent, err := readFileToByte("rabbitmq_queues.json")
if err != nil
fmt.Printf("open file error: %v\\n", err.Error())
return
if err := jsoniter.Unmarshal(jsonContent, &rq); err != nil
fmt.Printf("json umarshal error: %v", err.Error())
return
fmt.Println(rq)
type rabbitMqQueues struct
Queues []Queues `json:"queues"`
type Arguments map[string]interface
type Queues struct
Name string `json:"name"`
Vhost string `json:"vhost"`
Durable bool `json:"durable"`
AutoDelete bool `json:"auto_delete"`
Arguments Arguments `json:"arguments,omitempty"`
func readFileToByte(path string) ([]byte, error)
f, err := os.Open(path)
if err != nil
return nil, err
return io.ReadAll(f)
解析未知 json
未知的 json 使用 map[string]interface 解析
golang 没有直接的 map 转 struct,需要通过反射来实现。这里不实现
package main
import (
"bytes"
"fmt"
jsoniter "github.com/json-iterator/go"
"io"
"os"
)
func main()
//jsoniter.Unmarshal()
var rq map[string]interface
jsonContent, err := readFileToByte("rabbitmq_queues.json")
if err != nil
fmt.Printf("open file error: %v\\n", err.Error())
return
if err := jsoniter.Unmarshal(jsonContent, &rq); err != nil
fmt.Printf("json umarshal error: %v", err.Error())
return
fmt.Println(rq)
func readFileToByte(path string) ([]byte, error)
f, err := os.Open(path)
if err != nil
return nil, err
return io.ReadAll(f)
golang每2秒调用一次函数的两种方法(代码片段)
爬虫的两种解析方式xpath和bs4(代码片段)
1.xpath解析fromlxmlimportetree两种方式使用:将html文档变成一个对象,然后调用对象的方法去查找指定的节点(1)本地文件tree=etree.parse(文件名) ===》保存的本地文件路径放入(2)网络文件tree=etree.HTML(网页字符串)==》直接把得到... 查看详情
webpack4打包多个css的两种方法(代码片段)
...t://输出路径和文件名,使用path模块resolve方法将输出路径解析为 查看详情
android中使用gson解析json数据的两种方法
...交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率.从结构上看,所有的数据(data)最终都可以分解成三种类型:... 查看详情
create-react-app创建项目修改配置项的两种方法(代码片段)
...riptseject",... 运行npmruneject,此时,项目中多了一个config文件,并且各个配置文件已经暴露 查看详情
java解决文件名重复问题的两种方法(代码片段)
java解决文件名重复问题的两种方法在项目开发过程中,在保存文件的时候,通常要考虑文件名重复的情况,一般来说会有两种做法1.如果文件名不存在,不修改文件名;如果存在在文件名。在文件名后面加数... 查看详情
golang[json]json解析与创建(代码片段)
python遍历文件夹的两种方法(代码片段)
在处理数据的过程中,经常需要遍历文件夹,如果远程服务器的文件是分布式存储,遍历需要更快的速度。一种是通过os.walk()遍历,直接处理文件即可。一种是通过pathlib.Path().rglob()遍历,需要过滤出文件,... 查看详情
pythonqtgui设计:python调用ui文件的两种方法(基础篇—3)(代码片段)
Python调用UI文件有两种方法,第一种方法在上篇博文已经讲到,将UI文件转换为Python文件,进行调用。PythonQtGUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)今天来聊聊第二种方法:动态加载U... 查看详情
javamap类代码解析,map中键值对的两种取出方式(代码片段)
Map中键值对的两种取出方式1,SetkeySet:将map中所有的键存入到Set集合。因为set具备迭代器。所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。Map集合的取出原理:将map集合转成set集合。在... 查看详情
golang配置文件解析神器--viper(代码片段)
项目地址:https://github.com/spf13/viper安装方式:gogetgithub.com/spf13/viper简介viper是一个十分强大的配置文件解析工具,具有以下特点设置默认值支持的文件包括JSON,TOML,YAML,HCL,envfile和Javaproperties配置文件实时监听和重新读取配置文件从... 查看详情
python文件打包成可执行文件exe的两种方法(代码片段)
python可以做网站应用,也可以做客户端应用。但是客户端应用需要运行py脚本,如果用户不懂python就是一件比较麻烦的事情。幸好pyton有第三方模块可以将脚本可以转成exe执行。python上常见的打包方式目是通过pyinstaller来... 查看详情
从多个php数组创建json(代码片段)
...库。即使我使用json_encode方法来准备数组,结果也不是可解析的JSON。我是JSON和PHP的新手,但我尝试将三个数组编码为一个变量,以及三个不同的变量。但是在我回显结果的两种情况下,它都是无效的JSON。我在PHP文件的开头创建... 查看详情
afnetworking从指定网址下载文件的两种方式总结(代码片段)
网上有很多关于AFNetworking下载文件的方式,并不是很清晰,这是我使用过程中尝试使用的两种方式,在这里总结下。第一种方法:AFHTTPRequestOperation下载文件URL:文件下载地址;fileName:给下载文件定义的文件名... 查看详情
dungeonmaster的两种方法(代码片段)
DescriptionYouaretrappedina3Ddungeonandneedtofindthequickestwayout!Thedungeoniscomposedofunitcubeswhichmayormaynotbefilledwithrock.Ittakesoneminutetomoveoneunitnorth,south,east,west,upordown.Youcannot 查看详情
文件服务器的两种实现方式(代码片段)
简介??在日常的工作项目中,我们常常会需要用到文件服务器,即在网页端就能访问到本地的电脑中某个文件夹下的所有文件,示例界面如下:??本文将介绍笔者接触到的两种实现文件服务器的方法,它们所使用的工具如下:Nginx... 查看详情
makefile的两种编译方法——原地编译和单独输出文件夹编译(代码片段)
...代码时默认是原地编译,原地编译就是编译生成的.o文件和相应的.c文件是在同一目录的。原地编译比较简单,但是会污染源码,目录里会多出生成的.o文件,并且编译不同配置的目标文件,都要先清除之前的.o... 查看详情