From 932547edbb5e2e3d4d7f2790219dcdc42dc8cfc1 Mon Sep 17 00:00:00 2001 From: Prashant Varanasi Date: Sun, 28 Apr 2019 19:34:36 -0700 Subject: [PATCH] Disable HTMLEscape in reflect JSON encoder (#704) Fixes #700. Zap's custom JSON encoder does not escape HTML, so make encoding by the reflect-based JSON encoder work the same way. --- zapcore/json_encoder.go | 3 +++ zapcore/json_encoder_impl_test.go | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/zapcore/json_encoder.go b/zapcore/json_encoder.go index 2dc67d81e..9aec4eada 100644 --- a/zapcore/json_encoder.go +++ b/zapcore/json_encoder.go @@ -137,6 +137,9 @@ func (enc *jsonEncoder) resetReflectBuf() { if enc.reflectBuf == nil { enc.reflectBuf = bufferpool.Get() enc.reflectEnc = json.NewEncoder(enc.reflectBuf) + + // For consistency with our custom JSON encoder. + enc.reflectEnc.SetEscapeHTML(false) } else { enc.reflectBuf.Reset() } diff --git a/zapcore/json_encoder_impl_test.go b/zapcore/json_encoder_impl_test.go index 563d5f6b6..183e2b8c1 100644 --- a/zapcore/json_encoder_impl_test.go +++ b/zapcore/json_encoder_impl_test.go @@ -195,9 +195,9 @@ func TestJSONEncoderObjectFields(t *testing.T) { }, { desc: "reflect (success)", - expected: `"k":{"loggable":"yes"}`, + expected: `"k":{"escape":"<&>","loggable":"yes"}`, f: func(e Encoder) { - assert.NoError(t, e.AddReflected("k", map[string]string{"loggable": "yes"}), "Unexpected error JSON-serializing a map.") + assert.NoError(t, e.AddReflected("k", map[string]string{"escape": "<&>", "loggable": "yes"}), "Unexpected error JSON-serializing a map.") }, }, {