Comments (5)
Thanks for the report. Can we look at other parsers? Do we have use cases where those formats would be used so we can evaluate this based on actual usage patterns?
from plug.
The result of the qs parser (part of the Node eco-system) is this:
{"array":[{"foo":["foo1","foo2"],"bar":"bar2"}]}
If I parsed it 'manually' by reading it I'd expect this result. The fact that foo1 and foo2 are both values of [][foo] mean they should be together as elements in the foo array, bar is separate.
from plug.
Should we test as many parsers as we can and try to adapt to the most common behaviour or just leave the parser as is? I feel this issue is an easy one once we understand what should be done 😸.
from plug.
Thanks everyone!
So, I don't agree with node's result because I would expect to achieve that if I had this:
/?array[][foo][]=foo1&array[][foo][]=foo2&array[][bar]=bar2
For example, that's exactly what I get by serialising the value back to param using jQuery:
> decodeURIComponent(jQuery.param({"array":[{"foo":["foo1","foo2"],"bar":"bar2"}]}))
"array[0][foo][]=foo1&array[0][foo][]=foo2&array[0][bar]=bar2"
I don't seem to find any consensus here. jQuery will serialize arrays only if you have string. Check this out:
decodeURIComponent(jQuery.param({"array":[{"foo": "foo"}, "bar2"]}))
"array[0][foo]=foo&array[]=bar2"
Because the first element of the array is an object, it actually indexed it as array[0]
. So it seems what we are trying to discuss will never be generated by jQuery and it is hard to come up with any conclusion unless we discuss how and why this is being generated.
from plug.
I am closing this. Once we have real data and real forms we can always reopen and rediscuss!
from plug.
Related Issues (20)
- [Bug/compile] can't compile plug in bigger project, pop-os-22.04 HOT 9
- Plug.Conn.Query - decode_init, each,done unknown HOT 7
- Interest in an extension for Plug.Parsers.MULTIPART for FormData? HOT 2
- Mismatch spec for `Plug.Conn.Query.decode` HOT 1
- Plug.RequestId: put the `request_id` in `:private` or `:assigns`? HOT 1
- 1.15 changes decoding behaviour of `[]` HOT 5
- Request: Support MFA tuple for Plug.Session opts HOT 4
- Plug.Upload's random-tempdir generation is not very random HOT 1
- `strip_spaces` fails on `nil` since 1.15.0 HOT 1
- Plug.Conn.Query has changed the way it decodes parameters from 1.14 to 1.15 without warning HOT 1
- More flexible dynamic routes with `:` parameters HOT 2
- Compatibility issue with plug_crypto 2.0.0 HOT 3
- Error: There isn't enough space to open the popup HOT 1
- Docs inconsistency between Plug moduledoc and Plug.run HOT 1
- Plug.Upload: demonitor previous owner when giving away HOT 1
- Compilation issues on Erlang 26.x HOT 3
- html array items are dropped. HOT 1
- Plug.Conn is not closed when user closes the browser's tab (SSE) HOT 2
- setting max_age to nil in put_resp_cookie/4 causes crash HOT 1
- Sending a zip created on-the-fly via Plug.Conn.chunk fails after around 200Mb HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from plug.