time_as_int64_codec_test.go 837 B

123456789101112131415161718192021222324252627282930
  1. package extra
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/json-iterator/go/require"
  6. "github.com/json-iterator/go"
  7. )
  8. func Test_time_as_int64(t *testing.T) {
  9. should := require.New(t)
  10. RegisterTimeAsInt64Codec(time.Nanosecond)
  11. output, err := jsoniter.Marshal(time.Unix(1497952257, 1002))
  12. should.Nil(err)
  13. should.Equal("1497952257000001002", string(output))
  14. var val time.Time
  15. should.Nil(jsoniter.Unmarshal(output, &val))
  16. should.Equal(int64(1497952257000001002), val.UnixNano())
  17. }
  18. func Test_time_as_int64_keep_microsecond(t *testing.T) {
  19. should := require.New(t)
  20. RegisterTimeAsInt64Codec(time.Microsecond)
  21. output, err := jsoniter.Marshal(time.Unix(1, 1002))
  22. should.Nil(err)
  23. should.Equal("1000001", string(output))
  24. var val time.Time
  25. should.Nil(jsoniter.Unmarshal(output, &val))
  26. should.Equal(int64(1000001000), val.UnixNano())
  27. }