Description
Hello,
I’ve noticed that the json-enc
extension currently encodes all input values as strings, even when dealing with <input type="number">
fields. This behavior can lead to incorrect data representation in the resulting JSON when numeric values are expected.
To maintain backward compatibility while providing flexibility, I propose introducing an optional attribute (e.g., data-json-parse-data
) that allows users to opt-in to automatic type parsing. When this attribute is present on the <form>
element, the extension could:
- Convert values from
<input type="number">
into actual numbers usingNumber()
. - Keep the current behavior (encoding everything as strings) when the attribute is not present.
Example usage:
<form hx-ext="json-enc" hx-post="/api/endpoint" data-json-parse-data>
<input type="text" name="name" value="mehrad">
<input type="number" name="age" value="25">
</form>
Expected JSON output with data-json-parse-data
attribute:
{ "name": "mehrad", "age": 25 }
Without the attribute, the JSON output would remain:
{ "name": "mehrad", "age": "25" }
Would this feature be acceptable as a non-breaking enhancement? If you believe it’s a good idea, I would be happy to submit a PR for it.
Thanks in advance for your feedback!