[Question] Form encoding/decoding ignores slice of struct
tommysalt opened this issue · 4 comments
Current Behavior
When encoding/decoding from data with slices of custom structs, they are ignored even thought the examples mention:
[...]
struct
[...]
a slice or a pointer to a slice of one of the above types
Output:
map[name:[Name]]
Expected Behavior
Output:
map[name:[Name], id:[1 2], amount:[1 2]
Steps To Reproduce
var encoder = schema.NewEncoder()
type Position struct {
ID int64 `schema:"id"`
Amount int64 `schema:"amount"`
}
type Document struct {
Name string `schema:"name"`
Positions []Position `schema:"position"`
}
func main() {
person := Document{"Name", []Position{{1, 1}, {2, 2}}}
form := url.Values{}
encoder.Encode(person, form)
fmt.Println(form)
}
Output:
map[name:[Name]]
I added an if to catch the error and it seems it's missing an encoder.
err := encoder.Encode(person, form)
if err != nil {
fmt.Println(err)
}
schema: encoder not found for [{1 1} {2 2}]
So it seems that it's not a bug but I find the behavior rather odd because if I follow the docs they mention
[...]
struct
[...]
a slice or a pointer to a slice of one of the above types
So why do I need a custom encoder/decoder even tho my struct only contains supported fields (int64
)?
That's a great question @tommysalt thanks for bringing this to our attention. I'm not sure what the answer is right now but I'll try to answer it in the near future.