stretchr/objx

GitHub: stretchr/objx

Objx 是一个 Go 语言数据处理库,通过封装 map 类型并提供链式访问与自动类型转换,简化了 JSON、map 和 slice 等动态数据的读取与操作。

Stars: 864 | Forks: 79

# Objx [![构建状态](https://travis-ci.org/stretchr/objx.svg?branch=master)](https://travis-ci.org/stretchr/objx) [![Go 报告卡](https://goreportcard.com/badge/github.com/stretchr/objx)](https://goreportcard.com/report/github.com/stretchr/objx) [![Sourcegraph](https://sourcegraph.com/github.com/stretchr/objx/-/badge.svg)](https://sourcegraph.com/github.com/stretchr/objx) [![GoDoc](https://pkg.go.dev/badge/github.com/stretchr/objx?utm_source=godoc)](https://pkg.go.dev/github.com/stretchr/objx) Objx - 用于处理 map、slice、JSON 和其他数据的 Go 包。 入门指南: - 用[一行代码](#installation)安装 Objx,或者[用另一行代码](#staying-up-to-date)更新它 - 查看 API 文档 http://pkg.go.dev/github.com/stretchr/objx ## 概述 Objx 提供了 `objx.Map` 类型,它是一个 `map[string]interface{}`,并暴露了一个强大的 `Get` 方法(以及其他方法),让你能够轻松快速地访问 map 中的数据,而无需过多担心类型断言、数据缺失、默认值等问题。 ### 模式 Objx 使用一种可预测的模式,使得从 `map[string]interface{}` 中访问数据变得非常简单。调用其中一个 `objx.` 函数来创建你的 `objx.Map` 即可开始: ``` m, err := objx.FromJSON(json) ``` 注意:任何带有 `Must` 前缀的方法或函数在出现问题时都会触发 panic,其余的方法则是乐观处理,尝试在不触发 panic 的情况下解决问题。 使用 `Get` 访问你感兴趣的值。你还可以使用点和数组 表示法: ``` m.Get("places[0].latlng") ``` 一旦找到了你感兴趣的 `Value`,就可以使用 `Is*` 方法来确定它的类型。 ``` if m.Get("code").IsStr() { // Your code... } ``` 或者你可以直接假定类型,并使用其中一个强类型方法来提取实际值: ``` m.Get("code").Int() ``` 如果那里没有值(或者类型不正确),将会返回一个默认值,或者你也可以显式指定默认值。 ``` Get("code").Int(-1) ``` 如果你要处理的值是一个数据 slice,Objx 提供了许多有用的方法来遍历、操作和选择这些数据。你可以通过探索下面的索引了解更多信息。 ### 读取数据 一个关于如何使用 Objx 的简单示例: ``` // Use MustFromJSON to make an objx.Map from some JSON m := objx.MustFromJSON(`{"name": "Mat", "age": 30}`) // Get the details name := m.Get("name").Str() age := m.Get("age").Int() // Get their nickname (or use their name if they don't have one) nickname := m.Get("nickname").Str(name) ``` ### 遍历 由于 `objx.Map` 是一个 `map[string]interface{}`,你可以直接把它当作 map 来处理。例如,要 `range`(遍历)数据,按照你期望的方式操作即可: ``` m := objx.MustFromJSON(json) for key, value := range m { // Your code... } ``` ## 安装说明 要安装 Objx,请使用 go get: ``` go get github.com/stretchr/objx ``` ### 保持更新 要将 Objx 更新到最新版本,请运行: ``` go get -u github.com/stretchr/objx ``` ### 支持的 Go 版本 我们目前支持最近的三个 Go 主要版本。 ## 贡献 欢迎提交 issue、fork 本仓库并发送 pull request!
标签:EVTX分析, Go, Homebrew安装, JSON, Ruby工具, 开发工具库, 数据结构, 日志审计