code: func (chunk *MessageChunk) MarshalJSON() ([]byte, error) {
  	data, err := json.Marshal(chunk.message.Record)
  	if err != nil {
  		return nil, err
  	}
  	option, err := json.Marshal(chunk.message.Option)
  	if err != nil {
  		return nil, err
  	}
  	return []byte(fmt.Sprintf("[\"%s\",%d,%s,%s]", chunk.message.Tag,
  		chunk.message.Time, data, option)), err
  }
docs: // Golang default marshaler does not support
  // ["value", "value2", {"key":"value"}] style marshaling.
  // So, it should write JSON marshaler by hand.