| package jsoniter |
| |
| import ( |
| "encoding/json" |
| "testing" |
| |
| "github.com/stretchr/testify/require" |
| ) |
| |
| func Test_bind_api_demo(t *testing.T) { |
| should := require.New(t) |
| val := []int{} |
| err := UnmarshalFromString(`[0,1,2,3] `, &val) |
| should.Nil(err) |
| should.Equal([]int{0, 1, 2, 3}, val) |
| } |
| |
| func Test_iterator_api_demo(t *testing.T) { |
| should := require.New(t) |
| iter := ParseString(ConfigDefault, `[0,1,2,3]`) |
| total := 0 |
| for iter.ReadArray() { |
| total += iter.ReadInt() |
| } |
| should.Equal(6, total) |
| } |
| |
| type People struct { |
| Name string |
| Gender string |
| Age int |
| Address string |
| Mobile string |
| Country string |
| Height int |
| } |
| |
| func jsoniterMarshal(p *People) error { |
| _, err := Marshal(p) |
| if nil != err { |
| return err |
| } |
| return nil |
| } |
| func stdMarshal(p *People) error { |
| _, err := json.Marshal(p) |
| if nil != err { |
| return err |
| } |
| return nil |
| } |
| |
| func BenchmarkJosniterMarshal(b *testing.B) { |
| var p People |
| p.Address = "上海市徐汇区漕宝路" |
| p.Age = 30 |
| p.Country = "中国" |
| p.Gender = "male" |
| p.Height = 170 |
| p.Mobile = "18502120533" |
| p.Name = "Elvin" |
| b.ReportAllocs() |
| for i := 0; i < b.N; i++ { |
| err := jsoniterMarshal(&p) |
| if nil != err { |
| b.Error(err) |
| } |
| } |
| } |
| |
| func BenchmarkStdMarshal(b *testing.B) { |
| var p People |
| p.Address = "上海市徐汇区漕宝路" |
| p.Age = 30 |
| p.Country = "中国" |
| p.Gender = "male" |
| p.Height = 170 |
| p.Mobile = "18502120533" |
| p.Name = "Elvin" |
| b.ReportAllocs() |
| for i := 0; i < b.N; i++ { |
| err := stdMarshal(&p) |
| if nil != err { |
| b.Error(err) |
| } |
| } |
| } |