Documentation
¶
Index ¶
- Variables
- func Atoi(s string) int
- func Atoi64(s string) int64
- func Atou(s string) uint64
- func ConvertCsvLineToValue(valueType reflect.Type, row []string, columnNames []string, option *CsvOption) reflect.Value
- func ConvertStringToFieldValue(object, fieldVal reflect.Value, columnName, fieldString string, ...)
- func ConvertStringToRealType(typ reflect.Type, s string) any
- func ParseNestStringSlice(cellString string, option *CsvOption, nestFieldNames ...string) [][]*StringPair
- func ReadCsvFile(file string) ([][]string, error)
- func ReadCsvFileMap[M ~map[K]V, K IntOrString, V any](file string, m M, option *CsvOption) error
- func ReadCsvFileObject[V any](file string, v V, option *CsvOption) error
- func ReadCsvFileSlice[Slice ~[]V, V any](file string, s Slice, option *CsvOption) (Slice, error)
- func ReadCsvFromDataMap[M ~map[K]V, K IntOrString, V any](rows [][]string, m M, option *CsvOption) error
- func ReadCsvFromDataObject[V any](rows [][]string, v V, option *CsvOption) error
- func ReadCsvFromDataSlice[Slice ~[]V, V any](rows [][]string, s Slice, option *CsvOption) (Slice, error)
- type CsvOption
- func (co *CsvOption) GetConverterByColumnName(columnName string) FieldConverter
- func (co *CsvOption) GetConverterByType(typ reflect.Type) FieldConverter
- func (co *CsvOption) GetConverterByTypePtrOrStruct(typ reflect.Type) (converter FieldConverter, convertToElem bool)
- func (co *CsvOption) IgnoreColumn(columnNames ...string)
- func (co *CsvOption) RegisterConverterByColumnName(columnName string, converter FieldConverter) *CsvOption
- func (co *CsvOption) RegisterConverterByType(typ reflect.Type, converter FieldConverter) *CsvOption
- type FieldConverter
- type IntOrString
- type StringPair
Constants ¶
This section is empty.
Variables ¶
var DefaultOption = CsvOption{
ColumnNameRowIndex: 0,
DataBeginRowIndex: 1,
SliceSeparator: ";",
KvSeparator: "_",
PairSeparator: "#",
}
默认csv设置
Functions ¶
func ConvertCsvLineToValue ¶
func ConvertStringToFieldValue ¶
func ConvertStringToFieldValue(object, fieldVal reflect.Value, columnName, fieldString string, option *CsvOption, isSubStruct bool)
字段赋值,根据字段的类型,把字符串转换成对应的值
func ConvertStringToRealType ¶
支持int,float,string,[]byte,complex,bool
func ParseNestStringSlice ¶
func ParseNestStringSlice(cellString string, option *CsvOption, nestFieldNames ...string) [][]*StringPair
Name_a#Items_{CfgId_1#Num_1;CfgId_2#Num_1};Name_b#Items_{CfgId_1#Num_2;CfgId_2#Num_2}
func ReadCsvFile ¶
func ReadCsvFileMap ¶
func ReadCsvFileMap[M ~map[K]V, K IntOrString, V any](file string, m M, option *CsvOption) error
csv数据转换成map V支持proto.Message和普通struct结构
func ReadCsvFileObject ¶
key-value格式的csv数据给对象赋值 V支持proto.Message和普通struct结构
func ReadCsvFileSlice ¶
csv数据转换成slice V支持proto.Message和普通struct结构
func ReadCsvFromDataMap ¶
func ReadCsvFromDataMap[M ~map[K]V, K IntOrString, V any](rows [][]string, m M, option *CsvOption) error
csv数据转换成map V支持proto.Message和普通struct结构
func ReadCsvFromDataObject ¶
key-value格式的csv数据转换成对象 V支持proto.Message和普通struct结构
Types ¶
type CsvOption ¶
type CsvOption struct {
// 数据行索引(>=1)
DataBeginRowIndex int
// 字段名数据行索引(>=0)
ColumnNameRowIndex int
// key-value格式的csv数据给对象赋值,数据行索引(>=0)
ObjectDataBeginRowIndex int
// 是否禁用protobuf的字段别名(struct tag里的name),默认不禁用
// proto2示例 Num *int32 `protobuf:"varint,1,opt,name=num"`
// proto3示例 Num int32 `protobuf:"varint,1,opt,name=num,proto3"`
DisableProtobufAliasName bool
// 是否禁用json的字段别名(struct tag里的name),默认不禁用
// 示例 Num *int32 `json:"num,omitempty"`
DisableJsonAliasName bool
// 数组分隔符
// 如数组分隔符为;时,则1;2;3可以表示[1,2,3]的数组
SliceSeparator string
// Key-Value分隔符
// 如KvSeparator为_ PairSeparator为#
// 则a_1#b_2#c_3可以表示{"a":1,"b":2,"c":3}的map或者如下结构体
// type S struct {
// a string
// b string
// c int
// }
KvSeparator string
// 不同Key-Value之间的分隔符
// 如KvSeparator为_ PairSeparator为#
// 则a_1#b_2#c_3可以表示{"a":1,"b":2,"c":3}的map或者如下结构体
// type S struct {
// a string
// b string
// c int
// }
PairSeparator string
// contains filtered or unexported fields
}
func (*CsvOption) GetConverterByColumnName ¶
func (co *CsvOption) GetConverterByColumnName(columnName string) FieldConverter
func (*CsvOption) GetConverterByType ¶
func (co *CsvOption) GetConverterByType(typ reflect.Type) FieldConverter
func (*CsvOption) GetConverterByTypePtrOrStruct ¶
func (co *CsvOption) GetConverterByTypePtrOrStruct(typ reflect.Type) (converter FieldConverter, convertToElem bool)
如果typ是Struct,但是注册的FieldConverter是同类型的Ptr,则会返回Ptr类型的FieldConverter,同时convertToElem返回true
func (*CsvOption) IgnoreColumn ¶ added in v1.0.5
设置需要忽略的列名,如单纯的注释列
func (*CsvOption) RegisterConverterByColumnName ¶
func (co *CsvOption) RegisterConverterByColumnName(columnName string, converter FieldConverter) *CsvOption
注册列名对应的转换接口
func (*CsvOption) RegisterConverterByType ¶
func (co *CsvOption) RegisterConverterByType(typ reflect.Type, converter FieldConverter) *CsvOption
注册类型对应的转换接口
type IntOrString ¶
type StringPair ¶
func ParseNestString ¶
func ParseNestString(cellString string, option *CsvOption, nestFieldNames ...string) []*StringPair
解析有嵌套结构的字符串 如 CfgId_1#ConsumeItems_{CfgId_1#Num_2;CfgId_2#Num_3}#Rewards_{CfgId_1#Num_1}#CountLimit_2 解析成 [{CfgId,1},{ConsumeItems,CfgId_1#Num_2;CfgId_2#Num_3},{Rewards,CfgId_1#Num_1},{CountLimit,2}]
func ParsePairString ¶
func ParsePairString(cellString string, option *CsvOption) []*StringPair
把K1_V1#K2_V2#K3_V3转换成StringPair数组(如[{K1,V1},{K2,V2},{K3,V3}]