I like xml, there's nothing wrong with SOAP in my eyes but json is far easier to handle when programming in JavaScript.

I think this implementation is good but there is one thing that is missing, the parent node name is missing once in json meaning translating the same json back into xml would give a different result. It's easily fixed though by just including a json field at the top of the tree with the name.