.. _CONFIG/FileFormat/JSON: JSON **** Module :mod:`~pyTooling.Configuration.JSON` provides a configuration reader implementation for the JSON format. .. #contents:: Table of Contents :local: :depth: 1 .. admonition:: config.json .. code-block:: json { "version": 1 "list": [ "item_1", "item_2" ], "dict": { "key_1": "value_1", "key_2": "value_2" }, "complex": { "path": { "to": { "list": [ "item_10", "item_11", "item_12" ], "dict": { "key_10": "value_10", "key_11": "value_11" } } } } } .. seealso:: ECMA Standard 404 https://www.ecma-international.org/publications-and-standards/standards/ecma-404/ Official JSON Website https://www.json.org/json-en.html Wikipedia https://en.wikipedia.org/wiki/JSON Reading a JSON Formatted Config File ==================================== .. code-block:: python from pathlib import Path from pyTooling.Configuration.JSON import Configuration configFile = Path("config.json") config = Configuration(configFile) Accessing Values by Name ======================== .. code-block:: python # root-level scalar value configFileFormatVersion = config["version"] # value in a sequence firstItemInList = config["list"][0] # first value in dictionary firstItemInDict = config["dict"]["key_1"] Store Nodes in Variables ======================== .. code-block:: python # store intermediate node node = config["complex"]["path"]["to"] # navigate further nestedList = node["list"] nestedDict = node["dict"] Iterate Sequences ================= .. code-block:: python # simple list simpleList = config["list"] for item in simpleList: pass # deeply nested list nestedList = config["complex"]["path"]["to"]["list"] for item in nestedList: pass Iterate Dictionaries ==================== .. todo:: JSON:: Needs documentation