Ответ 1
Документацию по этому адресу можно найти здесь: http://james.newtonking.com/projects/json/help/html/SerializationSettings.htm
На момент написания этого описания поведение описывается следующим образом (с акцентом на мой):
ReferenceLoopHandling.Error
: По умолчанию Json.NET будет ошибочно, если (в противном случае сериализатор попадет в бесконечный цикл).
ReferenceLoopHandling.Ignore
: Json.NET будет игнорировать объекты в и не сериализуйте их. В первый раз, когда объект столкнувшись с ним, он будет сериализован как обычно, но если объект встречающийся как дочерний объект сам по себе, сериализатор пропустит сериализуя его.
ReferenceLoopHandling.Serialize
: этот параметр заставляет Json.NET сериализуйте объекты в контрольных циклах. Это полезно, если объекты вложенных, но не бесконечно.