separate toJson so we can see what a JSValue looks like raw