summaryrefslogtreecommitdiff
path: root/lib/lowmemjson/encode.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lowmemjson/encode.go')
-rw-r--r--lib/lowmemjson/encode.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/lowmemjson/encode.go b/lib/lowmemjson/encode.go
index ca3d406..c967785 100644
--- a/lib/lowmemjson/encode.go
+++ b/lib/lowmemjson/encode.go
@@ -7,6 +7,7 @@ package lowmemjson
import (
"bytes"
"encoding"
+ "encoding/base64"
"encoding/json"
"io"
"reflect"
@@ -250,10 +251,18 @@ func encode(w io.Writer, val reflect.Value, quote bool) {
encodeWriteByte(w, '}')
case reflect.Slice:
switch {
- case val.Type().Elem().Kind() == reflect.Uint8:
- encodeTODO(w, val)
case val.IsNil():
encodeWriteString(w, "null")
+ case val.Type().Elem().Kind() == reflect.Uint8:
+ encodeWriteByte(w, '"')
+ enc := base64.NewEncoder(base64.StdEncoding, w)
+ if _, err := enc.Write(val.Interface().([]byte)); err != nil {
+ panic(encodeError{err})
+ }
+ if err := enc.Close(); err != nil {
+ panic(encodeError{err})
+ }
+ encodeWriteByte(w, '"')
default:
encodeArray(w, val)
}