golang快速创建JSON对象的实用工具插件库gjo的使用
golang快速创建JSON对象的实用工具插件库gjo的使用
简介
gjo是一个小型实用工具,用于快速创建JSON对象。它受到了jpmens/jo项目的启发。
支持的操作系统
- Mac
- Linux
- Windows
系统要求
- Go 1.1.14及以上版本
- Git
安装方法
从源码构建
$ git clone https://github.com/skanehira/gjo.git
$ cd gjo
$ GO111MODULE=on go install
下载二进制文件
可以从发布页面下载预编译的二进制文件
使用方法
Mac和Linux
# 创建嵌套JSON对象
$ gjo -p status=$(gjo name=gorilla age=26 lang=$(gjo -a Go Java PHP))
{
"status": {
"age": 26,
"lang": [
"Go",
"Java",
"PHP"
],
"name": "gorilla"
}
}
# 查看帮助
$ gjo -h
Usage of gjo:
-a creates an array of words # 创建单词数组
-p pretty-prints # 美化输出格式
-v show version # 显示版本信息
Windows
在Windows上如果想使用$()
语法,需要先安装shellwrap工具。
shellwrap gjo -p status=$(gjo name=gorilla age=26)
示例代码
创建简单JSON对象
# 创建简单键值对
$ gjo name=John age=30
{"name":"John","age":30}
# 美化输出
$ gjo -p name=John age=30
{
"name": "John",
"age": 30
}
创建数组
# 创建字符串数组
$ gjo -a apple banana orange
["apple","banana","orange"]
# 在对象中包含数组
$ gjo -p fruits=$(gjo -a apple banana orange) count=3
{
"fruits": [
"apple",
"banana",
"orange"
],
"count": 3
}
创建嵌套对象
# 创建嵌套JSON结构
$ gjo -p user=$(gjo name=Alice age=25) active=true
{
"user": {
"name": "Alice",
"age": 25
},
"active": true
}
作者
gorilla0513
更多关于golang快速创建JSON对象的实用工具插件库gjo的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang快速创建JSON对象的实用工具插件库gjo的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
gjo - 快速创建JSON对象的Golang实用工具库
gjo是一个轻量级的Golang库,专门用于快速构建JSON对象,特别适合在测试、原型开发或需要快速生成JSON数据的场景中使用。
安装
go get github.com/skanehira/gjo
基本用法
创建简单JSON对象
package main
import (
"fmt"
"github.com/skanehira/gjo"
)
func main() {
// 创建简单JSON对象
obj := gjo.Object(
gjo.KV{"name", "John"},
gjo.KV{"age", 30},
gjo.KV{"isMarried", false},
)
fmt.Println(obj)
// 输出: {"name":"John","age":30,"isMarried":false}
}
创建嵌套JSON对象
func nestedExample() {
obj := gjo.Object(
gjo.KV{"user", gjo.Object(
gjo.KV{"name", "Alice"},
gjo.KV{"profile", gjo.Object(
gjo.KV{"email", "alice@example.com"},
gjo.KV{"active", true},
)},
)},
gjo.KV{"timestamp", "2023-05-15T12:00:00Z"},
)
fmt.Println(obj)
// 输出: {"user":{"name":"Alice","profile":{"email":"alice@example.com","active":true}},"timestamp":"2023-05-15T12:00:00Z"}
}
创建JSON数组
func arrayExample() {
arr := gjo.Array(
gjo.Object(gjo.KV{"id", 1}, gjo.KV{"name", "Item 1"}),
gjo.Object(gjo.KV{"id", 2}, gjo.KV{"name", "Item 2"}),
gjo.Object(gjo.KV{"id", 3}, gjo.KV{"name", "Item 3"}),
)
fmt.Println(arr)
// 输出: [{"id":1,"name":"Item 1"},{"id":2,"name":"Item 2"},{"id":3,"name":"Item 3"}]
}
混合使用对象和数组
func mixedExample() {
data := gjo.Object(
gjo.KV{"users", gjo.Array(
gjo.Object(
gjo.KV{"id", 101},
gjo.KV{"roles", gjo.Array("admin", "editor")},
),
gjo.Object(
gjo.KV{"id", 102},
gjo.KV{"roles", gjo.Array("viewer")},
),
)},
gjo.KV{"system", gjo.Object(
gjo.KV{"version", "1.0.0"},
gjo.KV{"settings", gjo.Object(
gjo.KV{"debug", true},
gjo.KV{"timeout", 30},
)},
)},
)
fmt.Println(data)
/* 输出:
{
"users": [
{"id":101,"roles":["admin","editor"]},
{"id":102,"roles":["viewer"]}
],
"system": {
"version":"1.0.0",
"settings": {
"debug":true,
"timeout":30
}
}
}
*/
}
高级用法
从结构体生成JSON
虽然gjo主要设计用于快速构建JSON,但也可以与标准库结合使用:
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func fromStructExample() {
user := User{
Name: "Bob",
Age: 25,
Email: "bob@example.com",
}
// 将结构体嵌入到更大的JSON对象中
obj := gjo.Object(
gjo.KV{"status", "success"},
gjo.KV{"data", user},
gjo.KV{"meta", gjo.Object(
gjo.KV{"count", 1},
gjo.KV{"timestamp", "2023-05-15T12:30:00Z"},
)},
)
fmt.Println(obj)
}
格式化输出
func prettyPrintExample() {
obj := gjo.Object(
gjo.KV{"name", "Pretty Print"},
gjo.KV{"details", gjo.Object(
gjo.KV{"enabled", true},
gjo.KV{"level", "verbose"},
)},
)
// 使用标准库进行美化输出
prettyJSON, _ := json.MarshalIndent(obj, "", " ")
fmt.Println(string(prettyJSON))
/* 输出:
{
"name": "Pretty Print",
"details": {
"enabled": true,
"level": "verbose"
}
}
*/
}
实际应用场景
- API测试:快速构建测试用的请求体
- Mock数据:为前端开发提供模拟数据
- 原型开发:快速验证JSON结构
- CLI工具:快速生成JSON输出
总结
gjo提供了一种简洁直观的方式来构建JSON对象,相比直接使用map[string]interface{}
或结构体marshal,它在需要快速构建复杂嵌套JSON时特别有用。虽然功能简单,但在适当的场景下能显著提高开发效率。
对于更复杂的JSON处理需求,建议结合标准库的encoding/json
或其他更全面的JSON处理库使用。