We have briefly discussed this in the Parsons Problem thread. But if we're to continue the discussion of this particular issue, I think we should do so in this thread.
Just to provide a context for anyone else landing here, my posting to the Parson's problem thread was:
Another recent poster (see this thread)
also wanted to have JSON objects passed in to Twig as associative
arrays rather than as objects. I can achieve that simply by changing one
line of code - a call to json_decode - passing in a parameter to force
associative arrays rather than objects. As I said in that thread: "...
I'm sorry, but I'm not prepared to make that change, as I don't know
what other consequences there might be. You're the first person who has
ever drawn my attention to this and I feel the risks are just too
great." But with a second person asking I am prepared to rethink.
It's possible that I could break existing question types by making that change, for example if someone were using the Twig attribute function to extract attributes from the object. But more fundamentally it seems to me that JSON objects should get converted to Twig object whereas JSON arrays should get converted to Twig arrays. Iterating over the attributes of an object is sometimes convenient but never pretty. If you want to iterate over something, shouldn't it be a list?!