DOMMatrixReadOnly: toJSON() method

Baseline
Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

The toJSON() method of the DOMMatrixReadOnly interface returns a JSON-serializable plain object representing the DOMMatrixReadOnly object.

The method is automatically called by JSON.stringify() when a DOMMatrixReadOnly object is encountered during JSON serialization. The serialized value can then be deserialized using the DOMMatrixReadOnly.fromMatrix() function within the reviver of JSON.parse().

Syntax

js
toJSON()

Parameters

None.

Return value

A JSON-serializable plain object containing the following properties:

  • a
  • b
  • c
  • d
  • e
  • f
  • m11
  • m12
  • m13
  • m14
  • m21
  • m22
  • m23
  • m24
  • m31
  • m32
  • m33
  • m34
  • m41
  • m42
  • m43
  • m44
  • is2D
  • isIdentity

Each property's value is copied as-is.

Examples

Calling toJSON() directly

This example creates two DOMMatrixReadOnly objects: a 2D matrix and a 3D matrix. Calling toJSON() directly returns a plain object. Its properties have the same values as the corresponding properties of the original object.

js
const matrix = new DOMMatrixReadOnly("translate(20px, 30px)");
const matrix3D = new DOMMatrixReadOnly("translate3d(22px, 55px, 66px)");

const json = matrix.toJSON();
console.log(json); // A plain object
console.log(typeof json); // "object"
console.log(json.is2D); // Same value as matrix.is2D

Serializing to a JSON string

The DOMMatrixReadOnly object from the previous example is serialized using JSON.stringify(), which calls the toJSON() method automatically.

js
console.log(JSON.stringify(matrix));

This would log a JSON string like so (formatted for readability):

json
{
  "a": 1,
  "b": 0,
  "c": 0,
  "d": 1,
  "e": 20,
  "f": 30,
  "m11": 1,
  "m12": 0,
  "m13": 0,
  "m14": 0,
  "m21": 0,
  "m22": 1,
  "m23": 0,
  "m24": 0,
  "m31": 0,
  "m32": 0,
  "m33": 1,
  "m34": 0,
  "m41": 20,
  "m42": 30,
  "m43": 0,
  "m44": 1,
  "is2D": true,
  "isIdentity": false
}

The matrix3D object is three-dimensional, so it has is2D set to false:

js
console.log(JSON.stringify(matrix3D));

This would log a JSON string like so (formatted for readability):

json
{
  "a": 1,
  "b": 0,
  "c": 0,
  "d": 1,
  "e": 22,
  "f": 55,
  "m11": 1,
  "m12": 0,
  "m13": 0,
  "m14": 0,
  "m21": 0,
  "m22": 1,
  "m23": 0,
  "m24": 0,
  "m31": 0,
  "m32": 0,
  "m33": 1,
  "m34": 0,
  "m41": 22,
  "m42": 55,
  "m43": 66,
  "m44": 1,
  "is2D": false,
  "isIdentity": false
}

Specifications

Specification
Geometry Interfaces Module Level 1
# dom-dommatrixreadonly-tojson

Browser compatibility

See also