odps/data/json.go (43 lines of code) (raw):

package data import ( "encoding/json" "strings" "github.com/pkg/errors" "github.com/aliyun/aliyun-odps-go-sdk/odps/datatype" ) type Json struct { Data string Valid bool } func NewJson(value interface{}) (*Json, error) { byteArr, err := json.Marshal(value) if err != nil { return nil, err } d := string(byteArr) return &Json{ Data: d, Valid: true, }, nil } func (j Json) Type() datatype.DataType { return datatype.JsonType{} } func (j Json) String() string { var sb strings.Builder sb.WriteString(j.Data) return sb.String() } func (j Json) Sql() string { var sb strings.Builder sb.WriteString("JSON'") sb.WriteString(j.Data) sb.WriteString("'") return sb.String() } func (j *Json) Scan(value interface{}) error { return errors.WithStack(tryConvertType(value, j)) } func (j *Json) GetData() string { return j.Data }