|
@@ -2,6 +2,7 @@ package rest
|
|
|
|
|
|
import (
|
|
|
"io"
|
|
|
+ "reflect"
|
|
|
|
|
|
"git.ali33.ru/fcg-xvii/go-tools/json"
|
|
|
)
|
|
@@ -139,3 +140,21 @@ func WriteBufSize(w io.Writer, val []byte, lenSize int, field string) IErrorArgs
|
|
|
|
|
|
return WriteBuf(w, val, field)
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+func ObjectFieldKeys(l []any) (res json.Map) {
|
|
|
+ res = make(json.Map)
|
|
|
+ t := reflect.TypeOf(res)
|
|
|
+ for _, v := range l {
|
|
|
+ rv := reflect.ValueOf(v)
|
|
|
+ if reflect.ValueOf(v).Kind() == reflect.Map {
|
|
|
+ if rv.CanConvert(t) {
|
|
|
+ m := rv.Convert(t).Interface().(json.Map)
|
|
|
+ if name := m.String("name", ""); len(name) > 0 {
|
|
|
+ res[name] = ObjectFieldKeys(m.Slice("fields", []any{}))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|