怎样把自己做的网站上传河南火焰山网站开发禹
web/
2025/10/4 14:16:36/
文章来源:
怎样把自己做的网站上传,河南火焰山网站开发禹,防止网站扫描,上海58同城招聘网最新招聘EasyJson是Go语言中对象序列化与反序列化的工具#xff0c;类似Java中的fastjson和Jackson#xff0c;能快速对对象进行序列化和反序列化#xff0c;本次介绍一下使用方法。
版本信息#xff1a;
go1.20.2 1#xff0c;获取源码
# go get
go get -u github.com/mailru…EasyJson是Go语言中对象序列化与反序列化的工具类似Java中的fastjson和Jackson能快速对对象进行序列化和反序列化本次介绍一下使用方法。
版本信息
go1.20.2 1获取源码
# go get
go get -u github.com/mailru/easyjson/
2安装
# install
go install github.com/mailru/easyjson/如果失败可以将项目克隆到$GOPATH/src/mailru 目录下 并将包名改为easyjson,然后进入easyjson包下的easyjson目录运行go build 命令再将生成的二进制文件放到$GOPATH/bin目录下并改名为easyjson 也可以将二进制文件加到环境变量里。
我的go build路径如下
/home/easton/go/src/github.com/mailru/easyjson/easyjson
3定义model文件
easyjson需要通过model文件生成对应的序列化和反序列化方法
项目结构
test
├── src
│ └── easyjson
│ ├── easyjson_test.go
│ ├── struct_def.go
│ └── struct_def_easyjson.go模型文件定义struct_def.go
package easyjsontype BasicInfo struct {Name string json:nameAge int json:age
}
type JobInfo struct {Skills []string json:skills
}
type Employee struct {BasicInfo BasicInfo json:basic_infoJobInfo JobInfo json:job_info
}4执行命令生成工具文件 cd test/src/easyjson
easyjson -all struct_def.go
生产struct_def_easyjson.go内容如下
// MarshalJSON supports json.Marshaler interface
func (v Employee) MarshalJSON() ([]byte, error) {w : jwriter.Writer{}easyjson7c82d03EncodeGoproject01Day33Easyjson1(w, v)return w.Buffer.BuildBytes(), w.Error
}// MarshalEasyJSON supports easyjson.Marshaler interface
func (v Employee) MarshalEasyJSON(w *jwriter.Writer) {easyjson7c82d03EncodeGoproject01Day33Easyjson1(w, v)
}// UnmarshalJSON supports json.Unmarshaler interface
func (v *Employee) UnmarshalJSON(data []byte) error {r : jlexer.Lexer{Data: data}easyjson7c82d03DecodeGoproject01Day33Easyjson1(r, v)return r.Error()
}5测试
创建easyjson_test.go,编写单元测试和性能测试方法如下
package easyjsonimport (encoding/jsontesting
)var jsonStr {basic_info:{name:Mike,age:30},job_info:{skills:[Java,Go,C]}
}func TestEasyJson(t *testing.T) {e : Employee{}err : e.UnmarshalJSON([]byte(jsonStr))if err ! nil {t.Fatal(json to obj error, err.Error())}t.Log(e)//对象转化为jsonbytes, err1 : e.MarshalJSON()if err1 ! nil {t.Fatal(object to json error, err1.Error())}t.Log(string(bytes))
}func BenchmarkEasyJson(b *testing.B) {b.ResetTimer()e : Employee{}for i : 0; i b.N; i {err : e.UnmarshalJSON([]byte(jsonStr))if err ! nil {b.Error(EasyJson: json to object error, err.Error())}_, err1 : e.MarshalJSON()if err1 ! nil {b.Error(EasyJson: object to json error, err1.Error())}}}func BenchmarkEmbeddedJson(b *testing.B) {b.ResetTimer()e : Employee{}for i : 0; i b.N; i {err : json.Unmarshal([]byte(jsonStr), e)if err ! nil {b.Error(Embedded: json to object error, err.Error())}//obj to json_, err1 : json.Marshal(e)if err1 ! nil {b.Error(Embedded: object to json error, err1.Error())}}
} 测试Embedded json 与EasyJson性能对比
cd test/src/easyjson/
go test -bench. benchmem
性能测试结果如下
pkg: test/easyjson
BenchmarkEasyJson-10 2773292 425.5 ns/op 252 B/op 5 allocs/op
BenchmarkEmbeddedJson-10 752252 1552 ns/op 584 B/op 11 allocs/op
PASS
ok test/easyjson 2.921s
EasyJson官网地址
Github地址https://github.com/mailru/easyjson
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86820.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!