def load(self):
formatter = JsonTableFormatter(self.load_dict())<EOL>formatter.accept(self)<EOL>return formatter.to_table_data()<EOL>
Extract tabular data as |TableData| instances from a JSON file.
|load_source_desc_file|

This method can be loading four types of JSON formats:

**(1)** Single table data in a file:

    .. code-block:: json
        :caption: Acceptable JSON Schema (1): single table

        {
            "type": "array",
            "items": {
                "type": "object",
                "additionalProperties": {
                    "anyOf": [
                        {"type": "string"},
                        {"type": "number"},
                        {"type": "boolean"},
                        {"type": "null"}
                    ]
                }
            }
        }

    .. code-block:: json
        :caption: Acceptable JSON example for the JSON schema (1)

        [
            {"attr_b": 4, "attr_c": "a", "attr_a": 1},
            {"attr_b": 2.1, "attr_c": "bb", "attr_a": 2},
            {"attr_b": 120.9, "attr_c": "ccc", "attr_a": 3}
        ]

    The example data will be loaded as the following tabular data:

        .. table::

            +------+------+------+
            |attr_a|attr_b|attr_c|
            +======+======+======+
            |     1|   4.0|a     |
            +------+------+------+
            |     2|   2.1|bb    |
            +------+------+------+
            |     3| 120.9|ccc   |
            +------+------+------+

**(2)** Single table data in a file:

    .. code-block:: json
        :caption: Acceptable JSON Schema (2): single table

        {
            "type": "object",
            "additionalProperties": {
                "type": "array",
                "items": {
                    "anyOf": [
                        {"type": "string"},
                        {"type": "number"},
                        {"type": "boolean"},
                        {"type": "null"}
                    ]
                }
            }
        }

    .. code-block:: json
        :caption: Acceptable JSON example for the JSON schema (2)

        {
            "attr_a": [1, 2, 3],
            "attr_b": [4, 2.1, 120.9],
            "attr_c": ["a", "bb", "ccc"]
        }

    The example data will be loaded as the following tabular data:

        .. table::

            +------+------+------+
            |attr_a|attr_b|attr_c|
            +======+======+======+
            |     1|   4.0|a     |
            +------+------+------+
            |     2|   2.1|bb    |
            +------+------+------+
            |     3| 120.9|ccc   |
            +------+------+------+

**(3)** Single table data in a file:

    .. code-block:: json

        :caption: Acceptable JSON Schema (3): single table

        {
            "type": "object",
            "additionalProperties": {
                "anyOf": [
                    {"type": "string"},
                    {"type": "number"},
                    {"type": "boolean"},
                    {"type": "null"}
                ]
            }
        }

    .. code-block:: json
        :caption: Acceptable JSON example for the JSON schema (3)

        {
            "num_ratings": 27,
            "support_threads": 1,
            "downloaded": 925716,
            "last_updated":"2017-12-01 6:22am GMT",
            "added":"2010-01-20",
            "num": 1.1,
            "hoge": null
        }

    The example data will be loaded as the following tabular data:

        .. table::

            +---------------+---------------------+
            |      key      |        value        |
            +===============+=====================+
            |num_ratings    |                   27|
            +---------------+---------------------+
            |support_threads|                    1|
            +---------------+---------------------+
            |downloaded     |               925716|
            +---------------+---------------------+
            |last_updated   |2017-12-01 6:22am GMT|
            +---------------+---------------------+
            |added          |2010-01-20           |
            +---------------+---------------------+
            |num            |                  1.1|
            +---------------+---------------------+
            |hoge           |None                 |
            +---------------+---------------------+

**(4)** Multiple table data in a file:

    .. code-block:: json
        :caption: Acceptable JSON Schema (4): multiple tables

        {
            "type": "object",
            "additionalProperties": {
                "type": "array",
                "items": {
                    "type": "object",
                    "additionalProperties": {
                        "anyOf": [
                            {"type": "string"},
                            {"type": "number"},
                            {"type": "boolean"},
                            {"type": "null"}
                        ]
                    }
                }
            }
        }

    .. code-block:: json
        :caption: Acceptable JSON example for the JSON schema (4)

        {
            "table_a" : [
                {"attr_b": 4, "attr_c": "a", "attr_a": 1},
                {"attr_b": 2.1, "attr_c": "bb", "attr_a": 2},
                {"attr_b": 120.9, "attr_c": "ccc", "attr_a": 3}
            ],
            "table_b" : [
                {"a": 1, "b": 4},
                {"a": 2 },
                {"a": 3, "b": 120.9}
            ]
        }

    The example data will be loaded as the following tabular data:

        .. table:: table_a

            +------+------+------+
            |attr_a|attr_b|attr_c|
            +======+======+======+
            |     1|   4.0|a     |
            +------+------+------+
            |     2|   2.1|bb    |
            +------+------+------+
            |     3| 120.9|ccc   |
            +------+------+------+

        .. table:: table_b

            +-+-----+
            |a|  b  |
            +=+=====+
            |1|  4.0|
            +-+-----+
            |2| None|
            +-+-----+
            |3|120.9|
            +-+-----+

**(5)** Multiple table data in a file:

    .. code-block:: json
        :caption: Acceptable JSON Schema (5): multiple tables

        {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "additionalProperties": {
                    "type": "array",
                    "items": {
                        "anyOf": [
                            {"type": "string"},
                            {"type": "number"},
                            {"type": "boolean"},
                            {"type": "null"}
                        ]
                    }
                }
            }
        }

    .. code-block:: json
        :caption: Acceptable JSON example for the JSON schema (5)

        {
            "table_a" : {
                "attr_a": [1, 2, 3],
                "attr_b": [4, 2.1, 120.9],
                "attr_c": ["a", "bb", "ccc"]
            },
            "table_b" : {
                "a": [1, 3],
                "b": [4, 120.9]
            }
        }

    The example data will be loaded as the following tabular data:

        .. table:: table_a

            +------+------+------+
            |attr_a|attr_b|attr_c|
            +======+======+======+
            |     1|   4.0|a     |
            +------+------+------+
            |     2|   2.1|bb    |
            +------+------+------+
            |     3| 120.9|ccc   |
            +------+------+------+

        .. table:: table_b

            +-+-----+
            |a|  b  |
            +=+=====+
            |1|  4.0|
            +-+-----+
            |3|120.9|
            +-+-----+

**(6)** Multiple table data in a file:

    .. code-block:: json
        :caption: Acceptable JSON Schema (6): multiple tables

        {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "additionalProperties": {
                    "anyOf": [
                        {"type": "string"},
                        {"type": "number"},
                        {"type": "boolean"},
                        {"type": "null"}
                    ]
                }
            }
        }

    .. code-block:: json
        :caption: Acceptable JSON example for the JSON schema (6)

        {
            "table_a": {
                "num_ratings": 27,
                "support_threads": 1,
                "downloaded": 925716,
                "last_updated":"2017-12-01 6:22am GMT",
                "added":"2010-01-20",
                "num": 1.1,
                "hoge": null
            },
            "table_b": {
                "a": 4,
                "b": 120.9
            }
        }

    The example data will be loaded as the following tabular data:

        .. table:: table_a

            +---------------+---------------------+
            |      key      |        value        |
            +===============+=====================+
            |num_ratings    |                   27|
            +---------------+---------------------+
            |support_threads|                    1|
            +---------------+---------------------+
            |downloaded     |               925716|
            +---------------+---------------------+
            |last_updated   |2017-12-01 6:22am GMT|
            +---------------+---------------------+
            |added          |2010-01-20           |
            +---------------+---------------------+
            |num            |                  1.1|
            +---------------+---------------------+
            |hoge           |None                 |
            +---------------+---------------------+


        .. table:: table_b

            +---+-----+
            |key|value|
            +===+=====+
            |a  |  4.0|
            +---+-----+
            |b  |120.9|
            +---+-----+

:return:
    Loaded table data iterator.
    |load_table_name_desc|

    ===================  ==============================================
    Format specifier     Value after the replacement
    ===================  ==============================================
    ``%(filename)s``     |filename_desc|
    ``%(key)s``          | This replaced the different value
                         | for each single/multiple JSON tables:
                         | [single JSON table]
                         | ``%(format_name)s%(format_id)s``
                         | [multiple JSON table] Table data key.
    ``%(format_name)s``  ``"json"``
    ``%(format_id)s``    |format_id_desc|
    ``%(global_id)s``    |global_id|
    ===================  ==============================================
:rtype: |TableData| iterator
:raises pytablereader.DataError:
    If the data is invalid JSON.
:raises pytablereader.error.ValidationError:
    If the data is not acceptable JSON format.