func()

in client_job.go [326:363]


func (e *ExportConfiguration) UnmarshalJSON(data []byte) error {
	c := map[string]interface{}{}
	if err := json.Unmarshal(data, &c); err != nil {
		return err
	}
	sinkMap := c["sink"].(map[string]interface{})
	t := sinkMap["type"].(string)
	var sink DataSink
	sinkBytes, err := json.Marshal(sinkMap)
	if err != nil {
		return err
	} else if string(DataSinkOSS) == t {
		sink = &AliyunOSSSink{}
	} else if string(DataSinkODPS) == t {
		sink = &AliyunODPSSink{}
	} else if string(DataSinkGENERAL) == t {
		sink = &AliyunGeneralSink{}
	} else { // TODO: other sinks to be implemented
		return errors.New(fmt.Sprintf("unsupported sink type:%s", t))
	}
	if err = json.Unmarshal(sinkBytes, sink); err != nil {
		return err
	}
	parameters := map[string]string{}
	for k, v := range c["parameters"].(map[string]interface{}) {
		parameters[k] = v.(string)
	}
	*e = ExportConfiguration{
		FromTime:   int64(c["fromTime"].(float64)),
		ToTime:     int64(c["toTime"].(float64)),
		LogStore:   c["logstore"].(string),
		Parameters: parameters,
		RoleArn:    c["roleArn"].(string),
		Version:    ExportVersion(c["version"].(string)),
		DataSink:   sink,
	}
	return nil
}