*Converts the input to JSON and returns it.*

        Any of the following is accepted:

        - The path to JSON file
        - Any scalar that can be interpreted as JSON
        - A dictionary or a list

        *Examples*

        | ${payload} | `Input` | ${CURDIR}/payload.json |

        | ${object} | `Input` | { "name": "Julie Langford", "username": "jlangfor" } |
        | ${object} | `Input` | ${dict} |

        | ${array} | `Input` | ["name", "username"] |
        | ${array} | `Input` | ${list} |

        | ${boolean} | `Input` | true |
        | ${boolean} | `Input` | ${True} |

        | ${number} | `Input` | 2.0 |
        | ${number} | `Input` | ${2.0} |

        | ${string} | `Input` | Quotes are optional for strings |

def input(self, what):
        """*Converts the input to JSON and returns it.*

        Any of the following is accepted:

        - The path to JSON file
        - Any scalar that can be interpreted as JSON
        - A dictionary or a list

        *Examples*

        | ${payload} | `Input` | ${CURDIR}/payload.json |

        | ${object} | `Input` | { "name": "Julie Langford", "username": "jlangfor" } |
        | ${object} | `Input` | ${dict} |

        | ${array} | `Input` | ["name", "username"] |
        | ${array} | `Input` | ${list} |

        | ${boolean} | `Input` | true |
        | ${boolean} | `Input` | ${True} |

        | ${number} | `Input` | 2.0 |
        | ${number} | `Input` | ${2.0} |

        | ${string} | `Input` | Quotes are optional for strings |
        """
        if what is None:
            return None
        if not isinstance(what, STRING_TYPES):
            return self._input_json_from_non_string(what)
        if path.isfile(what):
            return self._input_json_from_file(what)
        try:
            return self._input_json_as_string(what)
        except ValueError:
            return self._input_string(what)