整合嵌套结构, 基础验证通过
This commit is contained in:
parent
a40288f149
commit
0754f879e8
@ -15,7 +15,6 @@ import (
|
||||
dynamicStructGenerate "git.zhangdeman.cn/zhangdeman/dynamic-struct"
|
||||
"git.zhangdeman.cn/zhangdeman/json_filter/gjson_hack"
|
||||
"git.zhangdeman.cn/zhangdeman/serialize"
|
||||
"git.zhangdeman.cn/zhangdeman/wrapper"
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/tidwall/gjson"
|
||||
"github.com/tidwall/sjson"
|
||||
@ -75,10 +74,9 @@ func (h *handle) Run() ([]byte, error) {
|
||||
// 没出现异常, 但是value为nil, 视作参数不存在处理
|
||||
continue
|
||||
}
|
||||
fieldName := wrapper.String(field.JsonTag).SnakeCaseToCamel()
|
||||
// TODO : 支持嵌套结构体
|
||||
fieldTag := h.generateTag(field)
|
||||
h.dynamicStruct.AddField(fieldName, "", sourceValue, fieldTag, false)
|
||||
h.dynamicStruct.AddField(field.JsonTag, "", sourceValue, fieldTag, false)
|
||||
}
|
||||
val := h.dynamicStruct.Build().New()
|
||||
if err := serialize.JSON.UnmarshalWithNumber([]byte(h.formatVal), &val); nil != err {
|
||||
|
@ -16,11 +16,19 @@ import (
|
||||
|
||||
// TestRun_Simple_Data 无嵌套、无复杂数据类型的处理
|
||||
func TestRun_Simple_Data(t *testing.T) {
|
||||
testMap := map[string]any{
|
||||
"age": 18,
|
||||
userInfo := map[string]any{
|
||||
"age": 1800,
|
||||
"height": 179.5,
|
||||
"name": "baicha",
|
||||
}
|
||||
companyInfo := map[string]any{
|
||||
"address": "beijing",
|
||||
}
|
||||
|
||||
testMap := map[string]any{
|
||||
"user": userInfo,
|
||||
"company": companyInfo,
|
||||
}
|
||||
sourceByteData, _ := json.Marshal(testMap)
|
||||
fieldList := []StructField{
|
||||
{
|
||||
@ -34,15 +42,15 @@ func TestRun_Simple_Data(t *testing.T) {
|
||||
},
|
||||
{
|
||||
Tag: "max",
|
||||
Args: []string{"20"},
|
||||
Args: []string{"2000"},
|
||||
},
|
||||
},
|
||||
DefaultValue: "",
|
||||
SourcePath: "age",
|
||||
SourcePath: "user.age",
|
||||
TargetPath: "user_age",
|
||||
Errmsg: "年龄必须在[1,20]之间",
|
||||
Errmsg: "年龄必须在[1,2000]之间",
|
||||
},
|
||||
}
|
||||
_, err := Run(sourceByteData, fieldList)
|
||||
fmt.Println(err)
|
||||
res, err := Run(sourceByteData, fieldList)
|
||||
fmt.Println(err, string(res))
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user