Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Form encoding/decoding ignores slice of struct #214

Open
tommysalt opened this issue Apr 13, 2024 · 2 comments
Open

[BUG] Form encoding/decoding ignores slice of struct #214

tommysalt opened this issue Apr 13, 2024 · 2 comments
Labels

Comments

@tommysalt
Copy link

tommysalt commented Apr 13, 2024

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]]
@tommysalt tommysalt added the bug label Apr 13, 2024
@tommysalt
Copy link
Author

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

@tommysalt
Copy link
Author

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)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant