mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-02-02 16:28:39 +08:00
fix(goctl): dart gen user defined struct array (#1620)
This commit is contained in:
parent
68a81fea8a
commit
365c569d7c
@ -43,7 +43,9 @@ class {{.Name}} {
|
||||
{{end}}}{{end}});
|
||||
factory {{.Name}}.fromJson(Map<String,dynamic> m) {
|
||||
return {{.Name}}({{range .Members}}
|
||||
{{lowCamelCase .Name}}: {{if isDirectType .Type.Name}}m['{{getPropertyFromMember .}}']{{else if isClassListType .Type.Name}}(m['{{getPropertyFromMember .}}'] as List<dynamic>).map((i) => {{getCoreType .Type.Name}}.fromJson(i)){{else}}{{.Type.Name}}.fromJson(m['{{getPropertyFromMember .}}']){{end}},{{end}}
|
||||
{{lowCamelCase .Name}}: {{if isDirectType .Type.Name}}m['{{getPropertyFromMember .}}']
|
||||
{{else if isClassListType .Type.Name}}(m['{{getPropertyFromMember .}}'] as List<dynamic>).map((i) => {{getCoreType .Type.Name}}.fromJson(i)).toList()
|
||||
{{else}}{{.Type.Name}}.fromJson(m['{{getPropertyFromMember .}}']){{end}},{{end}}
|
||||
);
|
||||
}
|
||||
Map<String,dynamic> toJson() {
|
||||
|
@ -128,11 +128,10 @@ func specTypeToDart(tp spec.Type) (string, error) {
|
||||
}
|
||||
|
||||
s := getBaseType(valueType)
|
||||
if len(s) == 0 {
|
||||
return s, errors.New("unsupported primitive type " + tp.Name())
|
||||
if len(s) != 0 {
|
||||
return s, nil
|
||||
}
|
||||
|
||||
return s, nil
|
||||
return fmt.Sprintf("List<%s>", valueType), nil
|
||||
case spec.InterfaceType:
|
||||
return "Object", nil
|
||||
case spec.PointerType:
|
||||
|
@ -37,3 +37,35 @@ func Test_getPropertyFromMember(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_specTypeToDart(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
specType spec.Type
|
||||
want string
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "[]string should return List<String>",
|
||||
specType: spec.ArrayType{RawName: "[]string", Value: spec.PrimitiveType{RawName: "string"}},
|
||||
want: "List<String>",
|
||||
},
|
||||
{
|
||||
name: "[]Foo should return List<Foo>",
|
||||
specType: spec.ArrayType{RawName: "[]Foo", Value: spec.DefineStruct{RawName: "Foo"}},
|
||||
want: "List<Foo>",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := specTypeToDart(tt.specType)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("specTypeToDart() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if got != tt.want {
|
||||
t.Errorf("specTypeToDart() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user