美文网首页
11 - json相关

11 - json相关

作者: 天命_风流 | 来源:发表于2020-07-09 17:08 被阅读0次

    使用反射

    image.png
    • struct_def.go
    package jsontest
    
    type BasicInfo struct {
        Name string `json:"name"`
        Age  int    `json:"age"`
    }
    type JobInfo struct {
        Skills []string `json:"skills"`
    }
    type Employee struct {
        BasicInfo BasicInfo `json:"basic_info"`
        JobInfo   JobInfo   `json:"job_info"`
    }
    

    json_test.go

    package jsontest
    
    import (
        "encoding/json"
        "fmt"
        "reflect"
        "testing"
    )
    
    var jsonStr = `{
        "basic_info":{
            "name":"Mike",
            "age":30
        },
        "job_info":{
            "skills":["Java","Go","C"]
        }
    }   `
    
    func TestEmbeddedJson(t *testing.T) {
        e := new(Employee)
        err := json.Unmarshal([]byte(jsonStr), e)
        if err != nil {
            t.Error(err)
        }
        fmt.Println(reflect.TypeOf(*e))
        fmt.Println(e.BasicInfo)
        if v, err := json.Marshal(e); err == nil {
            fmt.Println(string(v))
        } else {
            t.Error(err)
        }
    
    }
    
    • 你可以看到,我们使用内置的 json 模块进行解析
    • 但是,这个模块的代码是使用反射实现的,它的性能比较低
    • 你可以使用更多的扩展包获得更高的性能,例如 easyjson

    相关文章

      网友评论

          本文标题:11 - json相关

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