Fair question. I think jo does tend to get more crufty if you're doing anything reasonably complex with multilevel structures, especially with arrays.
But jo does come into its own when you're wanting to use shell variables.
> jo mypid=$$ set_or_not=$WEASEL
> python -c 'import json,os;print(json.dumps({"set_or_not":os.getenv("WEASEL"), "mypid":os.getpid()}))'