Improve this Doc View Source

## Overview

Serializes input into a JSON-formatted string. Properties with leading $$ characters will be stripped since AngularJS uses this notation internally.

## Known Issues

The Safari browser throws a `RangeError` instead of returning `null` when it tries to stringify a `Date` object with an invalid date value. The only reliable way to prevent this is to monkeypatch the `Date.prototype.toJSON` method as follows:

    var _DatetoJSON = Date.prototype.toJSON;
    Date.prototype.toJSON = function() {
      try {
        return _DatetoJSON.call(this);
      } catch(e) {
        if (e instanceof RangeError) {
          return null;
        }
        throw e;
      }
    };

See https://github.com/angular/angular.js/pull/14221 for more information.

## Usage

`angular.toJson(obj, pretty);`

### Arguments

Param | Type | Details
--- | --- | ---
obj | Object Array Date string number boolean | Input to be serialized into JSON.
pretty (optional) | boolean number | If set to true, the JSON output will contain newlines and whitespace. If set to an integer, the JSON output will contain that many spaces per indentation. (default: 2)

### Returns

string undefined | JSON-ified string representing `obj`.