Richard -
The documentation does say that the directionsResult is in JSON, but
as you found out it is actually an object. After reading your note, I
tried stringify-parse on a directionsResult, and when I did it Firefox
threw "Invalid value for property <position>". So I, too, was unable
to stringify the directionsResult.
But you shouldn't have to do that. Save all the points in the
via_waypoint[] array, and then to reconstruct the route don't just
build a polyline (that would only be point-point by waypoints anyway),
but feed that array back into the directionsService. The
directionsService will build the same directionsResult, because you
are giving it the same waypoints.
There is one gotcha; you are limited to 8 intermediate waypoints, and
you may have dragged in more. But this is easy to work around.
Directions are transitive, so you just need to break up your string of
waypoints into chunks of 8, and then reconstruct the resulting route
in your own directionsRenderer.