Rails serializes forms in a format that is not similar to what you offer. If you have a nested model, it encodes it like this:
name=theo&company[name]=acme
(the equivalent JSON would be {"name": "theo", "company": {"name": "acme"}} )
I cannot say that I saw a Rails application sending arrays, but there is no reason why this would not work (in the worst case, you will get a hash with string keys).
PHP has a different convention if you want to send the array you make
names[]=alice&names[]=bob&names[]=steve
But I do not know how you make nested objects this way.
The HTTP specification, or if it is a URI specification, not sure which atm actually indicates that if you pass the same argument multiple times, you will get an array of values ββ(instead of the behavior of most third-party applications). This can be seen in the Jetty API docs, for example: http://api.dpml.net/org/mortbay/jetty/6.1.5/org/mortbay/jetty/Request.html#getParameterValues(java.lang.String )
However, most of them relate to GET requests, not necessarily POST (but perhaps application/x-url-encoded should adhere to the same standards as GET ).
In short, I donβt think there is a standard for this, POST bodies are a little wild western territory. I think, however, that either you should go with JSON because it was done to describe the structures, but application/x-url-encoded not, or you should try to better represent the structure of your data, for example:
users[0][name]=foo&users[0][age]=20&users[1][name]=bar&users[1][age]=10
This has some chance of actually being interpreted using the Rails application out of the box, for example.