feat: 字符串转struct slice
This commit is contained in:
@ -17,27 +17,41 @@ import (
|
||||
|
||||
// ToBaseTypeSlice 基础数据类型的列表
|
||||
// splitChar 没有用字符串表示的原因: 存在场景, 使用空字符串风格字符串, 空字符串是有意义的
|
||||
func ToBaseTypeSlice[BaseTpe op_type.BaseType](str string, splitChar ...string) define.BaseValueSliceResult[BaseTpe] {
|
||||
func ToBaseTypeSlice[BaseType op_type.BaseType](str string, splitChar ...string) define.BaseValueSliceResult[BaseType] {
|
||||
var (
|
||||
err error
|
||||
sliceValue []BaseTpe
|
||||
sliceValue []BaseType
|
||||
)
|
||||
|
||||
if len(splitChar) == 0 {
|
||||
// 序列化数组直接转换
|
||||
if err = serialize.JSON.UnmarshalWithNumberForString(str, &sliceValue); nil != err {
|
||||
return define.BaseValueSliceResult[BaseTpe]{Value: []BaseTpe{}, Err: err}
|
||||
return define.BaseValueSliceResult[BaseType]{Value: []BaseType{}, Err: err}
|
||||
}
|
||||
return define.BaseValueSliceResult[BaseTpe]{Value: sliceValue, Err: nil}
|
||||
return define.BaseValueSliceResult[BaseType]{Value: sliceValue, Err: nil}
|
||||
}
|
||||
// 按照分隔符转换
|
||||
strArr := strings.Split(str, splitChar[0])
|
||||
for _, v := range strArr {
|
||||
itemConvertRes := ToBaseValue[BaseTpe](v)
|
||||
itemConvertRes := ToBaseValue[BaseType](v)
|
||||
if nil != itemConvertRes.Err {
|
||||
return define.BaseValueSliceResult[BaseTpe]{Value: []BaseTpe{}, Err: err}
|
||||
return define.BaseValueSliceResult[BaseType]{Value: []BaseType{}, Err: itemConvertRes.Err}
|
||||
}
|
||||
sliceValue = append(sliceValue, itemConvertRes.Value)
|
||||
}
|
||||
return define.BaseValueSliceResult[BaseTpe]{Value: sliceValue, Err: nil}
|
||||
return define.BaseValueSliceResult[BaseType]{Value: sliceValue, Err: nil}
|
||||
}
|
||||
|
||||
// ToMapSlice map类型的列表
|
||||
func ToMapSlice[Key comparable, Value any](str string) define.MapValueSliceResult[Key, Value] {
|
||||
res := define.MapValueSliceResult[Key, Value]{Value: []map[Key]Value{}, Err: nil}
|
||||
res.Err = serialize.JSON.UnmarshalWithNumberForString(str, &res.Value)
|
||||
return res
|
||||
}
|
||||
|
||||
// ToStructSlice 结构体类型的列表
|
||||
func ToStructSlice[Value any](str string) define.StructValueSliceResult[Value] {
|
||||
res := define.StructValueSliceResult[Value]{Value: []Value{}, Err: nil}
|
||||
res.Err = serialize.JSON.UnmarshalWithNumberForString(str, &res.Value)
|
||||
return res
|
||||
}
|
||||
|
Reference in New Issue
Block a user