diff options
Diffstat (limited to 'lib/lowmemjson/encode.go')
-rw-r--r-- | lib/lowmemjson/encode.go | 13 |
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) } |