美文网首页
go使用json-iterator

go使用json-iterator

作者: 夜空最亮的9星 | 来源:发表于2024-01-08 09:59 被阅读0次

JSON-iterator 是一个用于高性能 JSON 解析的库,它提供了一种快速解析 JSON 数据的方式(快10倍)。
以下是使用 JSON-iterator 库的基本步骤:

安装 JSON-iterator 库

可以使用 go get 命令安装库:

go get github.com/json-iterator/go

你可以在 https://github.com/json-iterator/go 上找到 JSON-iterator 库的代码,

导入 JSON-iterator 库 在 Go 代码中导入 JSON-iterator 库,可以使用以下命令:

import "github.com/json-iterator/go"

解析 JSON 数据

在 Go 代码中解析 JSON 数据,可以使用 JSON-iterator 库提供的 Unmarshal 函数:

var json = `{"name": "John", "age": 30}`
var data map[string]interface{}
err := jsoniter.Unmarshal([]byte(json), &data)
if err != nil {
    fmt.Println("解析失败", err)
}
fmt.Printf("解析结果: %v\n", data)

这个例子解析了一个包含 name 和 age 属性的 JSON 对象,并将其转换为 Go 的 map[string]interface{} 类型。

序列化 Go 对象到 JSON

JSON-iterator 还提供了 Marshal 函数来将 Go 对象序列化为 JSON 字符串。例如,以下代码将一个 Go 对象转换为 JSON 字符串:

data := map[string]interface{}{"name": "John", "age": 30}
json, err := jsoniter.Marshal(data)
if err != nil {
    fmt.Println("序列化失败", err)
}
fmt.Println("序列化结果:", string(json))

JSON编码为字符串

jsoniter "github.com/json-iterator/go"


func JSONMarshalToString(v interface{}) string {
    s, err := jsoniter.MarshalToString(v)
    if err != nil {
        return ""
    }
    return s
}

字符串转JSON编码


func StringToJSON(val interface{}) interface{} {
    str := val.(string)
    if strings.HasPrefix(str, "{") && strings.HasSuffix(str, "}") {
        var parameter interface{}
        _ = json.Unmarshal([]byte(str), &parameter)
        return parameter
    } else {
        var parameter []interface{}
        _ = json.Unmarshal([]byte(str), &parameter)
        return parameter
    }
}

案例



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

type City struct {
    Status string `json:"status"`

    Code int `json:"code"`

    Data string `json:"data"`
}



func Test_json(t *testing.T) {

    var p1 User
    p1.Age = 23
    p1.Address = "北京"
    p1.Name = "zhang san"

    toString := JSONMarshalToString(p1)

    fmt.Println(toString)
    // {"name":"zhang san","address":"北京","age":23}

    var c1 City

    c1.Data = toString

    c1.Code = 100
    c1.Status = "ok"

    marshalToString := JSONMarshalToString(c1)

    fmt.Println(marshalToString)
    //{"status":"ok","code":100,"data":"{\"name\":\"zhang san\",\"address\":\"北京\",\"age\":23}"}

}

相关文章

网友评论

      本文标题:go使用json-iterator

      本文链接:https://www.haomeiwen.com/subject/igvnndtx.html