Golang JSON处理新库 - Jogson使用指南

Golang JSON处理新库 - Jogson使用指南 大家好

我编写了一个新的库,用于轻松处理JSON。它省去了定义结构体以及进行编组和解组的需要,使得读写JSON变得更加快速和直观。

GitHub仓库图片

GitHub - rmordechay/jogson: Go library for working with JSON

Go library for working with JSON

非常欢迎任何反馈、PR、评论、批评、加星或其他任何形式的交流。

示例:

// string 
var name string = object.GetString("name")
// int 
var age int = object.GetInt("age")
// float64 
var height float64 = object.GetFloat("height")
// bool 
var isFunny bool = object.GetBool("is_funny")

更多关于Golang JSON处理新库 - Jogson使用指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang JSON处理新库 - Jogson使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Jogson确实为Go的JSON处理提供了一种更灵活的方式,尤其适合处理动态或结构不固定的JSON数据。以下是一个使用Jogson进行JSON解析和构建的示例:

package main

import (
    "fmt"
    "github.com/rmordechay/jogson"
)

func main() {
    // 解析JSON字符串
    jsonStr := `{"name":"Alice","age":25,"height":1.68,"is_funny":true}`
    obj, err := jogson.Parse(jsonStr)
    if err != nil {
        panic(err)
    }

    // 读取值
    name := obj.GetString("name")
    age := obj.GetInt("age")
    height := obj.GetFloat("height")
    isFunny := obj.GetBool("is_funny")

    fmt.Printf("Name: %s, Age: %d, Height: %.2f, Funny: %v\n", 
        name, age, height, isFunny)

    // 构建新对象
    newObj := jogson.NewObject()
    newObj.Put("name", "Bob")
    newObj.Put("age", 30)
    newObj.Put("skills", []string{"Go", "Java", "Python"})

    // 嵌套对象
    address := jogson.NewObject()
    address.Put("city", "New York")
    address.Put("zip", "10001")
    newObj.Put("address", address)

    // 序列化为JSON
    output, _ := newObj.String()
    fmt.Println("Generated JSON:", output)
}

对于数组处理:

// 处理JSON数组
arrStr := `["apple", "banana", "cherry"]`
arr, err := jogson.ParseArray(arrStr)
if err != nil {
    panic(err)
}

// 遍历数组
for i := 0; i < arr.Length(); i++ {
    item := arr.GetString(i)
    fmt.Printf("Item %d: %s\n", i, item)
}

// 修改数组
arr.Set(1, "blueberry")
updatedArr, _ := arr.String()
fmt.Println("Updated array:", updatedArr)

错误处理示例:

// 安全类型获取
obj := jogson.ParseOrEmpty(`{"count": "not_a_number"}`)
if count, ok := obj.TryGetInt("count"); ok {
    fmt.Println("Count:", count)
} else {
    fmt.Println("Invalid integer field")
}

// 检查字段存在
if obj.HasKey("missing_field") {
    value := obj.GetString("missing_field")
    fmt.Println(value)
}

Jogson的链式操作:

// 链式操作
value := jogson.ParseOrEmpty(`{"user": {"profile": {"email": "test@example.com"}}}`).
    GetObject("user").
    GetObject("profile").
    GetString("email")

fmt.Println("Email:", value)

这个库在处理未知结构的JSON时特别有用,避免了预定义结构体的限制。

回到顶部