feat(structs): add FilterStructToMap
utility function
#674
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #673
Summary
This PR introduces
FilterStructToMap
, a utility function in thestructs
package that converts a struct into amap[string]any
while respectingjson
tags,omitempty
, and user-defined field filters.This is a direct solution to the problem identified in naabu#1545, where the existing
FilterStruct
utility caused issues with JSON marshaling due to its zero-value filtering approach.Implementation Details
FilterStructToMap[T any](...) (map[string]any, error)
:include/exclude
field lists as input.reflect
.json
tag as the key for the output map.omitempty
is present.include/exclude
lists for filtering.walkFilteredFields
(Internal Helper):walkFilteredFields
, has been created.include/exclude
maps.FilterStruct
to reuse the same logic, reducing duplication.This utility offers a reliable, reusable solution for JSON-safe struct filtering and serialization.