go-openapi/swag
GitHub: go-openapi/swag
go-openapi/swag 是一个 Go 通用工具函数库,为 go-openapi 系列项目提供类型转换、JSON/YAML 处理、文件加载等横切关注点支持,也可独立使用。
Stars: 221 | Forks: 52
# Swag
[][test-url] [][cov-url] [][vuln-scan-url] [][codeql-url]
[][release-url] [][gocard-url] [][codefactor-url] [][license-url]
[][godoc-url] [][discord-url] [][goversion-url]  
为 go-openapi 和 go-swagger 项目提供的一系列辅助函数。
你也可以在自己的项目中独立使用它。
* [目录](#contents)
* [依赖](#dependencies)
* [更新日志](#change-log)
* [许可协议](#licensing)
* [致贡献者](#note-to-contributors)
* [路线图](#roadmap)
## 公告
## 状态
API 已稳定。
## 在你的项目中导入此库
```
go get github.com/go-openapi/swag/{module}
```
或者为了向后兼容:
```
go get github.com/go-openapi/swag
```
## 目录
`go-openapi/swag` 暴露了一系列相对独立的模块。
未来,不会再直接在根包级别向 `swag` API 添加新功能,
根包级别保留只是为了向后兼容。所有导出的顶级功能现已被弃用。
子模块将继续演进,未来可能还会添加一些新模块。
| 模块 | 内容 | 主要功能 |
|---------------|---------|---------------|
| `cmdutils` | 处理 CLI 的实用工具 ||
| `conv` | 类型转换实用工具 | 转换任意类型的值和指针
将 string 转换为内置类型(封装了 `strconv`)
需要 `./typeutils`(测试依赖)
| | `fileutils` | 文件实用工具 | | | `jsonname` | JSON 实用工具(已弃用) | 从 `go` 属性推断 JSON 名称
请改用 `github.com/go-openapi/jsonpointer/jsonname` | | `jsonutils` | JSON 实用工具 | 快速拼接 JSON
从动态 `go` 数据结构读取和写入 JSON
~需要 `github.com/mailru/easyjson`~
| | `loading` | 文件加载 | 从文件或 http 加载
需要 `./yamlutils`
| | `mangling` | 安全名称生成 | 针对 `go` 的名称重整(name mangling)
| | `netutils` | 网络实用工具 | 从地址获取主机和端口
| | `pools` | 处理 sync.Pools 的实用工具 | | | `stringutils` | `string` 实用工具 | 在 slice 中搜索(支持不区分大小写)
以数组形式拆分/合并查询参数
| | `typeutils` | `go` 类型实用工具 | 检查任意类型的零值
安全地检查 nil 值
| | `yamlutils` | YAML 实用工具 | 将 YAML 转换为 JSON
将 YAML 加载到动态 YAML 文档中
维护 YAML 对象中键的原始顺序
需要 `./jsonutils`
~需要 `github.com/mailru/easyjson`~
需要 `go.yaml.in/yaml/v3`
| ## 依赖 仓库级别的根模块 `github.com/go-openapi/swag` 维护着少量 标准库之外的依赖。 * YAML 实用工具依赖于 `go.yaml.in/yaml/v3` * JSON 实用工具依赖于其注册的适配器模块: * 默认情况下,仅使用标准库 * `github.com/mailru/easyjson` 现在仅为模块 `github.com/go-openapi/swag/jsonutils/adapters/easyjson/json` 的依赖项,供愿意导入该模块的用户使用。 * 集成测试和基准测试使用所有依赖项,并作为各自的独立模块发布 * 其他依赖项为测试依赖,取自 `github.com/stretchr/testify` ## 用法 **如何在运行时显式注册依赖项?** 以下内容将保持 `swag` 提供的 JSON 实用工具在 `v0.24.1` 之前的工作方式。 ``` import ( "github.com/go-openapi/swag/jsonutils/adapters" easyjson "github.com/go-openapi/swag/jsonutils/adapters/easyjson/json" ) func init() { easyjson.Register(adapters.Registry) } ``` 后续对 `jsonutils.ReadJSON()` 或 `jsonutils.WriteJSON()` 的调用,只要传入的数据结构分别实现了 `easyjson.Unmarshaler` 或 `easyjson.Marshaler`,就会切换至 `easyjson`;否则将回退至标准库。 有关更多详细信息,你还可以查看我们的 [集成测试](jsonutils/adapters/testintegration/integration_suite_test.go#29)。 ## 路线图 查看当前的 [TODO 列表](docs/TODOS.md) ## 更新日志 请参阅
对于 v0.26.0 之前的版本,请参阅[发布说明](./docs/NOTES.md)。
**接下来有什么新内容?**
未来,我们计划:
* 为 `go1.25` 构建提供基于 `encoding/json/v2` 的 JSON 适配器实现。
* 为 `goccy/go-json` 和 `jsoniterator/go` 提供类似的实现,也许其他一些
类似的库也会很有趣。
将 string 转换为内置类型(封装了 `strconv`)
需要 `./typeutils`(测试依赖)
| | `fileutils` | 文件实用工具 | | | `jsonname` | JSON 实用工具(已弃用) | 从 `go` 属性推断 JSON 名称
请改用 `github.com/go-openapi/jsonpointer/jsonname` | | `jsonutils` | JSON 实用工具 | 快速拼接 JSON
从动态 `go` 数据结构读取和写入 JSON
~需要 `github.com/mailru/easyjson`~
| | `loading` | 文件加载 | 从文件或 http 加载
需要 `./yamlutils`
| | `mangling` | 安全名称生成 | 针对 `go` 的名称重整(name mangling)
| | `netutils` | 网络实用工具 | 从地址获取主机和端口
| | `pools` | 处理 sync.Pools 的实用工具 | | | `stringutils` | `string` 实用工具 | 在 slice 中搜索(支持不区分大小写)
以数组形式拆分/合并查询参数
| | `typeutils` | `go` 类型实用工具 | 检查任意类型的零值
安全地检查 nil 值
| | `yamlutils` | YAML 实用工具 | 将 YAML 转换为 JSON
将 YAML 加载到动态 YAML 文档中
维护 YAML 对象中键的原始顺序
需要 `./jsonutils`
~需要 `github.com/mailru/easyjson`~
需要 `go.yaml.in/yaml/v3`
| ## 依赖 仓库级别的根模块 `github.com/go-openapi/swag` 维护着少量 标准库之外的依赖。 * YAML 实用工具依赖于 `go.yaml.in/yaml/v3` * JSON 实用工具依赖于其注册的适配器模块: * 默认情况下,仅使用标准库 * `github.com/mailru/easyjson` 现在仅为模块 `github.com/go-openapi/swag/jsonutils/adapters/easyjson/json` 的依赖项,供愿意导入该模块的用户使用。 * 集成测试和基准测试使用所有依赖项,并作为各自的独立模块发布 * 其他依赖项为测试依赖,取自 `github.com/stretchr/testify` ## 用法 **如何在运行时显式注册依赖项?** 以下内容将保持 `swag` 提供的 JSON 实用工具在 `v0.24.1` 之前的工作方式。 ``` import ( "github.com/go-openapi/swag/jsonutils/adapters" easyjson "github.com/go-openapi/swag/jsonutils/adapters/easyjson/json" ) func init() { easyjson.Register(adapters.Registry) } ``` 后续对 `jsonutils.ReadJSON()` 或 `jsonutils.WriteJSON()` 的调用,只要传入的数据结构分别实现了 `easyjson.Unmarshaler` 或 `easyjson.Marshaler`,就会切换至 `easyjson`;否则将回退至标准库。 有关更多详细信息,你还可以查看我们的 [集成测试](jsonutils/adapters/testintegration/integration_suite_test.go#29)。 ## 路线图 查看当前的 [TODO 列表](docs/TODOS.md) ## 更新日志 请参阅
标签:EVTX分析, Go, OpenAPI, Ruby工具, 工具函数, 开发工具库, 日志审计, 类型转换