code: def save_structure_to_file(structure: JsonExportable, filename: str) -> None:
      
      json_structure = {'node': structure._asdict(),
                        'instaloader': {'version': __version__, 'node_type': structure.__class__.__name__}}
      compress = filename.endswith('.xz')
      if compress:
          with lzma.open(filename, 'wt', check=lzma.CHECK_NONE) as fp:
              json.dump(json_structure, fp=fp, separators=(',', ':'))
      else:
          with open(filename, 'wt') as fp:
              json.dump(json_structure, fp=fp, indent=4, sort_keys=True)
docs: Saves a :class:`Post`, :class:`Profile` or :class:`StoryItem` to a '.json' or '.json.xz' file such that it can
      later be loaded by :func:`load_structure_from_file`.
  
      If the specified filename ends in '.xz', the file will be LZMA compressed. Otherwise, a pretty-printed JSON file
      will be created.
  
      :param structure: :class:`Post`, :class:`Profile` or :class:`StoryItem`
      :param filename: Filename, ends in '.json' or '.json.xz'