def to_json(self, indent: int=None, ignore_none: bool=True, ignore_empty: bool=False) -> str:
        """From instance to json string

        :param indent: Number of indentation
        :param ignore_none: Properties which is None are excluded if True
        :param ignore_empty: Properties which is empty are excluded if True
        :return: Json string

        Usage:

            >>> from owlmixin.samples import Human
            >>> human = Human.from_dict({
            ...     "id": 1,
            ...     "name": "Tom",
            ...     "favorites": [
            ...         {"name": "Apple", "names_by_lang": {"en": "Apple", "de": "Apfel"}},
            ...         {"name": "Orange"}
            ...     ]
            ... })
            >>> human.to_json()
            '{"favorites": [{"name": "Apple","names_by_lang": {"de": "Apfel","en": "Apple"}},{"name": "Orange"}],"id": 1,"name": "Tom"}'
        """
        return util.dump_json(traverse(self, ignore_none, force_value=True, ignore_empty=ignore_empty), indent)