----
I would be wary of solving the problem this way.
The problem is the object/array combo you're talking about is still perfectly valid JavaScript. However, due to the way browsers handle JavaScript, it's not currently possible to access the data from it. If you do implement it, you run the risk of a browser changing its behavior ever so slightly and destroying your security. ;-)
The way I've typically seen this done is to add a prefix of some kind to the data. The prefix can be valid JavaScript (eg: while(1); or throw 1;) or it can be text that JavaScript can't parse. Either way, the point is to ensure that a cross-domain request via the <script> tag will fail and not be able to get to the data. These solutions are slightly better because it's less likely that these constructs will become valid in the future (although still possible).
With that being said, here's the advice from the Browser Security Handbook, which advocates for a slightly different solution (http://code.google.com/p/browsersec/wiki/Part2):
Note: quite a few JSON interfaces not intended for cross-domain consumption rely on a somewhat fragile defense: the assumption that certain very specific object serializations ({ param: "value"}) or meaningless prefixes (&&&START&&&) will not parse via <SCRIPT SRC="..."> or that endless loop prefixes such as while (1) will prevent interception of the remainder of the data. In most cases, these assumptions are not likely to be future-safe; a better option is to require custom XMLHttpRequest headers, or employ a parser-breaking prefix that is unlikely to ever work as long as the basic structure of JavaScript is maintained. One such example is the string of )]}', followed by a newline.