0
点赞
收藏
分享

微信扫一扫

flink 从monggo读取PB级全部数据根据分组统计数据 样例

在 Go 语言中,解析 JSON 性能的优劣取决于所使用的库。以下是对比 encoding/json、jsoniter、go-json 和 gjson 的性能分析和推荐:

1. encoding/json(标准库)

简介

示例

import (
    "encoding/json"
    "fmt"
)

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    jsonString := `{"name":"Alice","age":30}`
    var user User

    err := json.Unmarshal([]byte(jsonString), &user)
    if err != nil {
        fmt.Println(err)
    }

    fmt.Println(user)
}

2. jsoniter

简介

安装

go get -u github.com/json-iterator/go 

 示例 

import (
    "fmt"
    jsoniter "github.com/json-iterator/go"
)

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    var json = jsoniter.ConfigCompatibleWithStandardLibrary
    jsonString := `{"name":"Alice","age":30}`
    var user User

    err := json.Unmarshal([]byte(jsonString), &user)
    if err != nil {
        fmt.Println(err)
    }

    fmt.Println(user)
}

3. go-json

简介

安装

go get -u github.com/goccy/go-json

示例

import (
    "fmt"
    json "github.com/goccy/go-json"
)

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    jsonString := `{"name":"Alice","age":30}`
    var user User

    err := json.Unmarshal([]byte(jsonString), &user)
    if err != nil {
        fmt.Println(err)
    }

    fmt.Println(user)
}

4. gjson

简介

安装

go get -u github.com/tidwall/gjson 

示例 

import (
    "fmt"
    "github.com/tidwall/gjson"
)

func main() {
    jsonString := `{"name":"Alice","age":30}`

    // 使用 gjson 获取 name 字段
    name := gjson.Get(jsonString, "name").String()
    age := gjson.Get(jsonString, "age").Int()

    fmt.Printf("Name: %s, Age: %d\n", name, age)
}

5.GF框架中的gjson 

GF简介

使用了GF框架的著名项目 

GF 框架的主要特性

简介 

安装

go get -u github.com/gogf/gf/v2/encoding/gjson 

示例

import (
    "fmt"
    "github.com/gogf/gf/v2/encoding/gjson"
)

func main() {
    jsonData := `{"name": "Alice", "age": 30, "address": {"city": "Wonderland", "zip": "12345"}}`
    j, err := gjson.LoadContent(jsonData)
    if err != nil {
        fmt.Println("Failed to parse JSON:", err)
        return
    }
    name := j.GetString("name")
    city := j.GetString("address.city")
    fmt.Println("Name:", name)
    fmt.Println("City:", city)
}

性能对比


总结 

举报

相关推荐

0 条评论