def to_json(self, filename: str = None, encoding: str = 'utf-8', errors: str = 'strict', multiline: bool = False, **json_kwargs): """ Transform the BoxList object into a JSON string. :param filename: If provided will save to file :param encoding: File encoding :param errors: How to handle encoding errors :param multiline: Put each item in list onto it's own line :param json_kwargs: additional arguments to pass to json.dump(s) :return: string of JSON or return of `json.dump` """ if filename and multiline: lines = [ _to_json(item, filename=False, encoding=encoding, errors=errors, **json_kwargs) for item in self ] with open(filename, 'w', encoding=encoding, errors=errors) as f: f.write("\n".join(lines)) else: return _to_json(self.to_list(), filename=filename, encoding=encoding, errors=errors, **json_kwargs)
def test_to_json(self): m_file = os.path.join(tmp_dir, "movie_data") movie_string = _to_json(movie_data) assert "Rick Moranis" in movie_string _to_json(movie_data, filename=m_file) assert "Rick Moranis" in open(m_file).read() assert json.load(open(m_file)) == json.loads(movie_string)
def to_json( self, filename: Union[str, PathLike] = None, encoding: str = "utf-8", errors: str = "strict", **json_kwargs ): """ Transform the Box object into a JSON string. :param filename: If provided will save to file :param encoding: File encoding :param errors: How to handle encoding errors :param json_kwargs: additional arguments to pass to json.dump(s) :return: string of JSON (if no filename provided) """ return _to_json(self.to_dict(), filename=filename, encoding=encoding, errors=errors, **json_kwargs)