|
@@ -4,6 +4,7 @@ import (
|
|
|
"bytes"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
+ "git.nspix.com/golang/kos/util/arrays"
|
|
|
"git.nspix.com/golang/kos/util/pool"
|
|
|
"github.com/mattn/go-runewidth"
|
|
|
"reflect"
|
|
@@ -184,6 +185,7 @@ func serializeArray(val []any) (buf []byte, err error) {
|
|
|
}
|
|
|
if isStructElement {
|
|
|
vs = make([][]any, 0, len(val))
|
|
|
+ indexes := make([]int, 0)
|
|
|
for i, v := range val {
|
|
|
rv := reflect.Indirect(reflect.ValueOf(v))
|
|
|
if rv.Kind() == reflect.Struct {
|
|
@@ -198,13 +200,16 @@ func serializeArray(val []any) (buf []byte, err error) {
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
|
+ indexes = append(indexes, j)
|
|
|
row = append(row, columnName)
|
|
|
}
|
|
|
vs = append(vs, row)
|
|
|
}
|
|
|
row := make([]any, 0, rv.Type().NumField())
|
|
|
for j := 0; j < rv.Type().NumField(); j++ {
|
|
|
- row = append(row, rv.Field(j).Interface())
|
|
|
+ if arrays.Exists(j, indexes) {
|
|
|
+ row = append(row, rv.Field(j).Interface())
|
|
|
+ }
|
|
|
}
|
|
|
vs = append(vs, row)
|
|
|
} else {
|