Golang JSON处理工具GoJSONQ v2.5.0正式发布!

Golang JSON处理工具GoJSONQ v2.5.0正式发布! GitHub

仓库图片

thedevsaddam/gojsonq

一个简单的 Go 包,用于查询 JSON/YAML/XML/CSV 数据 - thedevsaddam/gojsonq


更多关于Golang JSON处理工具GoJSONQ v2.5.0正式发布!的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang JSON处理工具GoJSONQ v2.5.0正式发布!的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


GoJSONQ v2.5.0的发布为Go开发者提供了更强大的JSON数据处理能力。这个版本在查询性能和功能扩展上有显著改进,特别是在处理复杂嵌套结构时表现优异。

下面演示如何使用v2.5.0的新特性进行JSON查询:

package main

import (
    "fmt"
    "github.com/thedevsaddam/gojsonq/v2"
)

func main() {
    jsonStr := `{
        "users": [
            {
                "id": 1,
                "name": "John",
                "age": 30,
                "skills": ["Go", "Python", "JavaScript"]
            },
            {
                "id": 2,
                "name": "Jane",
                "age": 25,
                "skills": ["Java", "Kotlin"]
            }
        ]
    }`

    // 创建JSONQ实例
    jq := gojsonq.New().FromString(jsonStr)
    
    // 查询年龄大于26的用户
    result := jq.From("users").
        Where("age", ">", 26).
        Select("name", "age").
        Get()
    
    fmt.Printf("年龄大于26的用户: %v\n", result)
    
    // 重置查询并查找具有特定技能的用户
    jq.Reset()
    
    skillResult := jq.From("users").
        Where("skills", "contains", "Go").
        Select("name", "skills").
        Get()
    
    fmt.Printf("掌握Go语言的用户: %v\n", skillResult)
}

v2.5.0增强了错误处理机制,新增了对YAML/XML/CSV格式的原生支持:

// 处理YAML数据示例
yamlContent := `
users:
  - name: Alice
    age: 28
  - name: Bob
    age: 32
`

jq := gojsonq.New().File("data.yaml")
// 或直接处理YAML字符串
jqYaml := gojsonq.New().FromString(yamlContent).From("users")

// 链式查询示例
result := gojsonq.New().FromString(jsonStr).
    From("users").
    SortBy("age").
    Offset(0).
    Limit(10).
    Get()

性能优化方面,v2.5.0在处理大型JSON数据集时内存使用更高效,查询速度比之前版本提升约30%。新增的First()Last()方法可以快速获取首尾元素:

jq := gojsonq.New().FromString(jsonStr)

// 获取第一个用户
firstUser := jq.From("users").First()
fmt.Printf("第一个用户: %v\n", firstUser)

// 获取最后一个用户
jq.Reset()
lastUser := jq.From("users").Last()
fmt.Printf("最后一个用户: %v\n", lastUser)

这个版本还修复了多个边界条件问题,增强了类型安全性,使JSON数据处理更加可靠。

回到顶部