I tried to respond to you yesterday but for some reason it was considered spam and I couldn’t.
The simplest way I can put it is this:
toSource() is equivalent to JSON.stringify(). Except that it adds two parentheses, one at the start and one at the end. Better yet than JSON.stringify, toSource() can also serialize functions contained in your objects. The result is a string.
eval() works like JSON.parse(). I used it several times with json files and it worked well. Way faster than JSON.parse(). Also, eval() is capable of evaluation objects that contain functions. The parameter sent to eval() must be a string.
some basic example:
var a = {some complicated object};
var aString = a.toSource();
You can save aString in some file.
if you want to use var a again:
var a = eval(aString);
I didn’t find a lot against these 2 functions, except that you should not use eval() because it could cause harm by evaluating something someone else could pass to it. But I think it is safe if you use it in AE scripts.