In my never ending question for the be-all, end-all cross-language data binding story, I've been thinking lately about JSON.
SDO's DataObject interface looks something like this (see page 23 in the referenced PDF file). Actually, this is just a bit of it.
Now let's compare to JSON's Java interface, and again, just a bit of it.
Look familiar? Now, sure, SDO has a lot more 'stuff' in it than JSONObject, like change tracking, but, really, I'm not interested in that stuff anyway. In any case, if SDO is good, and JSON smells like SDO, I guess it must be kinda good also.
Lastly, one of the things I always think about with data-to-xml bindings is whether fields/properties/etc should be rendered as attributes or child elements. Sometimes, you have no choice; if the field is 'complex', you will likely have to render as a child element. With a string-valued field, you got a tough choice. If the value is small, it feels better usually as an attribute; if it's longer, it feels better as a subelement.
None of this is an issue with JSON. Blissfully choice-challenged.