You are right, ForceArray=>1 works. It keeps everything in format, except the order which shouldn't matter in my case.
The only issue I am having now is parsing through the tree. I am trying to write a recursive function to walk through this hash of array/hashes, which is proving to be difficult.