Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

json: AppendTimeLayout should add field separators #799

Merged
merged 1 commit into from Mar 14, 2020

Commits on Mar 12, 2020

  1. json: AppendTimeLayout should add field separators

    In #786, we added support for improving the performance of encoding time
    by allowing encoder implementations to implement AppendTimeLayout.
    
    If the encoder implements, `AppendTimeLayout(time.Time, string)`, some
    of the time encoders shipped with Zap will use that method, which in
    turn can make use of `Buffer.AppendTime`.
    
    That change inadvertently broke the JSON output for arrays of time that
    make use of that functionality.
    
    Compare the old version of AppendTimeLayout with AppendString (both
    operations append a string to the array).
    
        func (enc *jsonEncoder) AppendString(val string) {
          enc.addElementSeparator()
          enc.buf.AppendByte('"')
          // ...
        }
    
        func (enc *jsonEncoder) AppendTimeLayout(time time.Time, layout string) {
          enc.buf.AppendByte('"')
          // ...
        }
    
    Without the `enc.addElementSeparator` call, `AppendTimeLayout` does not
    include the `,` separator between array elements, instead yielding the
    following.
    
        ["2001-12-19T00:00:00Z""2002-12-18T00:00:00Z""2003-12-17T00:00:00Z"]
    
    Fixes #798
    abhinav committed Mar 12, 2020
    Copy the full SHA
    8ba5fb9 View commit details
    Browse the repository at this point in the history