Goで[]bytesを含む構造体をbase64を使ってjson化する


Goで下のような構造体をbase64を使ってjsonにしたいと考えています。  
一つ考えられるのはencoding/base64の`EncodeToString()`を使って一旦`[]byte`を文字列に直すという方法ですが、どのように`MarshalJSON`,
`UnMarshalJSON()`を実装すればいいのでしょうか?

[code]

    
    type Picture struct {
        Id int64
        Data []byte
        Name string
    }
    
    
[/code]




Goの`json.Marshal`は自動的に`[]byte`をBase64に変換します。

<http://play.golang.org/p/9jWlQY_wo9>

`json.Unmarshal`も同様にデコード先の型が`[]byte`だった場合、JSONの文字列をBase64エンコーディングとみなして自動的にデコードします。(文字列が`==`で終わっている必要あり)

<http://play.golang.org/p/Auhup66_4Y>

> Array and slice values encode as JSON arrays, except that []byte  
>  encodes as a base64-encoded string, and a nil slice encodes as the  
>  null JSON object.

<http://golang.org/pkg/encoding/json/#Marshal>




Goの`json.Marshal`は自動的に`[]byte`をBase64に変換します。

<http://play.golang.org/p/9jWlQY_wo9>

`json.Unmarshal`も同様にデコード先の型が`[]byte`だった場合、JSONの文字列をBase64エンコーディングとみなして自動的にデコードします。(文字列が`==`で終わっている必要あり)

<http://play.golang.org/p/Auhup66_4Y>

> Array and slice values encode as JSON arrays, except that []byte  
>  encodes as a base64-encoded string, and a nil slice encodes as the  
>  null JSON object.

<http://golang.org/pkg/encoding/json/#Marshal>

