This commit is contained in:
兔子
2023-08-15 20:48:11 +08:00
parent 8bbc8e12af
commit 46777d69e4
3 changed files with 61 additions and 5 deletions

View File

@@ -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 {

View File

@@ -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
}

View File

@@ -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)
}