Stringy.js will stringify your circular JS objects without complaint. Unfortunately it currently fails if the object hierarchy exceeds 30 total items.
var b = {foo: {bar: null}}
b.foo.bar = b // it's circular!
console.log("Filtering: ", b)
console.log(stringy.stringify(b)) // works!
console.log(JSON.stringify(b)) // exception