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.Remove = ArrayRemove
Array.Unique = ArrayUnique[any] Array.Unique = ArrayUnique[any]
Array.Empty = ArrayEmpty[any] Array.Empty = ArrayEmpty[any]
Array.MapWithField = ArrayMapWithField
Password.Create = PasswordCreate Password.Create = PasswordCreate
Password.Verify = PasswordVerify Password.Verify = PasswordVerify
Rand.Int = RandInt Rand.Int = RandInt
@@ -67,6 +68,7 @@ func init() {
Json.Encode = JsonEncode Json.Encode = JsonEncode
Json.Decode = JsonDecode Json.Decode = JsonDecode
Json.Get = JsonGet Json.Get = JsonGet
Json.String = JsonString
Format.Query = FormatQuery Format.Query = FormatQuery
Parse.ParamsBefore = ParseParamsBefore Parse.ParamsBefore = ParseParamsBefore
Parse.Params = ParseParams Parse.Params = ParseParams
@@ -138,10 +140,11 @@ var In struct {
} }
var Array struct { var Array struct {
Filter func(array []string) (slice []string) Filter func(array []string) (slice []string)
Remove func(array []string, args ...string) (slice []string) Remove func(array []string, args ...string) (slice []string)
Unique func(array []any) (slice []any) Unique func(array []any) (slice []any)
Empty func(array []any) (slice []any) Empty func(array []any) (slice []any)
MapWithField func(array []map[string]any, field any) (slice []any)
} }
var Password struct { var Password struct {
@@ -170,6 +173,7 @@ var Json struct {
Encode func(value any) (result string) Encode func(value any) (result string)
Decode func(value any) (result any) Decode func(value any) (result any)
Get func(value any, key any) (result any, err error) Get func(value any, key any) (result any, err error)
String func(value any) (result string)
} }
var Format struct { var Format struct {

View File

@@ -1,6 +1,7 @@
package utils package utils
import ( import (
"github.com/spf13/cast"
"strings" "strings"
) )
@@ -51,3 +52,21 @@ func ArrayEmpty[T any](array []T) (slice []any) {
} }
return slice 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" "fmt"
json "github.com/json-iterator/go" json "github.com/json-iterator/go"
"github.com/spf13/cast" "github.com/spf13/cast"
"sort"
"strings" "strings"
) )
@@ -41,4 +42,36 @@ func JsonGet(jsonString any, key any) (result any, err error) {
} }
return result, nil 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)
}