Thanks Dasa.
I would have thought these two were pretty much equivalent:
var FavouritesJSON:String = JSONUtil.encode(ArrayOfAllFavourites.source);
var FavouritesJSON:String = JSONUtil.encode(ArrayOfAllFavourites.toArray());
Regardless, neither worked as there was several nested array collections so I managed to pre-emptively alter those in other places before they ever got to this function. Those that I couldn't I had to manually parse the array collection and set the five properties. Not ideal but manageable in my case.
It's strange that this suddenly didn't handle it at 3.1 but was OK at 2.4.
Thanks
Andrew