func flatRepeatedList()

in sdk/requests/acs_request.go [321:377]


func flatRepeatedList(dataValue reflect.Value, request AcsRequest, position, prefix string) (err error) {
	dataType := dataValue.Type()
	for i := 0; i < dataType.NumField(); i++ {
		field := dataType.Field(i)
		name, containsNameTag := field.Tag.Lookup("name")
		fieldPosition := position
		if fieldPosition == "" {
			fieldPosition, _ = field.Tag.Lookup("position")
		}
		typeTag, containsTypeTag := field.Tag.Lookup("type")
		if containsNameTag {
			if !containsTypeTag {
				// simple param
				key := prefix + name
				value := dataValue.Field(i).String()
				if dataValue.Field(i).Kind().String() == "map" {
					byt, _ := json.Marshal(dataValue.Field(i).Interface())
					value = string(byt)
					if value == "null" {
						value = ""
					}
				}
				err = addParam(request, fieldPosition, key, value)
				if err != nil {
					return
				}
			} else if typeTag == "Repeated" {
				// repeated param
				err = handleRepeatedParams(request, dataValue, prefix, name, fieldPosition, i)
				if err != nil {
					return
				}
			} else if typeTag == "Struct" {
				err = handleStruct(request, dataValue, prefix, name, fieldPosition, i)
				if err != nil {
					return
				}
			} else if typeTag == "Map" {
				err = handleMap(request, dataValue, prefix, name, fieldPosition, i)
				if err != nil {
					return err
				}
			} else if typeTag == "Json" {
				byt, err := json.Marshal(dataValue.Field(i).Interface())
				if err != nil {
					return err
				}
				key := prefix + name
				err = addParam(request, fieldPosition, key, string(byt))
				if err != nil {
					return err
				}
			}
		}
	}
	return
}