mirror of
https://github.com/unti-io/go-utils.git
synced 2025-10-05 16:26:50 +08:00
v1.2.6
This commit is contained in:
12
utils/app.go
12
utils/app.go
@@ -51,6 +51,7 @@ func init() {
|
||||
Array.Remove = ArrayRemove
|
||||
Array.Unique = ArrayUnique[any]
|
||||
Array.Empty = ArrayEmpty[any]
|
||||
Array.MapWithField = ArrayMapWithField
|
||||
Password.Create = PasswordCreate
|
||||
Password.Verify = PasswordVerify
|
||||
Rand.Int = RandInt
|
||||
@@ -67,6 +68,7 @@ func init() {
|
||||
Json.Encode = JsonEncode
|
||||
Json.Decode = JsonDecode
|
||||
Json.Get = JsonGet
|
||||
Json.String = JsonString
|
||||
Format.Query = FormatQuery
|
||||
Parse.ParamsBefore = ParseParamsBefore
|
||||
Parse.Params = ParseParams
|
||||
@@ -138,10 +140,11 @@ var In struct {
|
||||
}
|
||||
|
||||
var Array struct {
|
||||
Filter func(array []string) (slice []string)
|
||||
Remove func(array []string, args ...string) (slice []string)
|
||||
Unique func(array []any) (slice []any)
|
||||
Empty func(array []any) (slice []any)
|
||||
Filter func(array []string) (slice []string)
|
||||
Remove func(array []string, args ...string) (slice []string)
|
||||
Unique func(array []any) (slice []any)
|
||||
Empty func(array []any) (slice []any)
|
||||
MapWithField func(array []map[string]any, field any) (slice []any)
|
||||
}
|
||||
|
||||
var Password struct {
|
||||
@@ -170,6 +173,7 @@ var Json struct {
|
||||
Encode func(value any) (result string)
|
||||
Decode func(value any) (result any)
|
||||
Get func(value any, key any) (result any, err error)
|
||||
String func(value any) (result string)
|
||||
}
|
||||
|
||||
var Format struct {
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"github.com/spf13/cast"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -51,3 +52,21 @@ func ArrayEmpty[T any](array []T) (slice []any) {
|
||||
}
|
||||
return slice
|
||||
}
|
||||
|
||||
// ArrayMapWithField - 数组Map保留指定字段
|
||||
func ArrayMapWithField(array []map[string]any, field any) (slice []any) {
|
||||
|
||||
// 获取字段
|
||||
keys := cast.ToStringSlice(Unity.Keys(field))
|
||||
|
||||
if IsEmpty(keys) {
|
||||
return cast.ToSlice(array)
|
||||
}
|
||||
|
||||
for _, item := range array {
|
||||
val := Map.WithField(cast.ToStringMap(item), keys)
|
||||
slice = append(cast.ToSlice(slice), val)
|
||||
}
|
||||
|
||||
return slice
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
json "github.com/json-iterator/go"
|
||||
"github.com/spf13/cast"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -41,4 +42,36 @@ func JsonGet(jsonString any, key any) (result any, err error) {
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
}
|
||||
|
||||
// JsonString map转json字符串
|
||||
func JsonString(data any) (result string) {
|
||||
|
||||
item := cast.ToStringMap(data)
|
||||
|
||||
// 将map的key排序
|
||||
keys := make([]string, 0, len(item))
|
||||
for key := range item {
|
||||
keys = append(keys, key)
|
||||
}
|
||||
sort.Strings(keys)
|
||||
|
||||
// 构建有序的map
|
||||
order := make(map[string]any)
|
||||
for _, key := range keys {
|
||||
order[key] = item[key]
|
||||
}
|
||||
|
||||
// 转换为JSON字符串
|
||||
bytes, err := json.Marshal(order)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
// 判断是否为空
|
||||
if string(bytes) == "{}" {
|
||||
return ""
|
||||
}
|
||||
|
||||
return string(bytes)
|
||||
}
|
||||
|
Reference in New Issue
Block a user