mirror of
https://github.com/TeamPGM/pyrogram.git
synced 2024-12-01 01:57:51 +00:00
58 lines
1.8 KiB
ReStructuredText
58 lines
1.8 KiB
ReStructuredText
Object Serialization
|
|
====================
|
|
|
|
Serializing means converting a Pyrogram object, which exists as Python class instance, to a text string that can be
|
|
easily shared and stored anywhere. Pyrogram provides two formats for serializing its objects: one good looking for
|
|
humans and another more compact for machines that is able to recover the original structures.
|
|
|
|
.. contents:: Contents
|
|
:backlinks: none
|
|
:local:
|
|
|
|
-----
|
|
|
|
For Humans - str(obj)
|
|
---------------------
|
|
|
|
If you want a nicely formatted, human readable JSON representation of any object in the API -- namely, any object from
|
|
:doc:`Pyrogram types <../api/types/index>`, :doc:`raw functions <../telegram/functions/index>` and
|
|
:doc:`raw types <../telegram/types/index>` -- you can use ``str(obj)``.
|
|
|
|
.. code-block:: python
|
|
|
|
...
|
|
|
|
with app:
|
|
r = app.get_chat("haskell")
|
|
|
|
print(str(r))
|
|
|
|
.. tip::
|
|
|
|
When using ``print()`` you don't actually need to use ``str()`` on the object because it is called automatically, we
|
|
have done that above just to show you how to explicitly convert a Pyrogram object to JSON.
|
|
|
|
For Machines - repr(obj)
|
|
------------------------
|
|
|
|
If you want to share or store objects for future references in a more compact way, you can use ``repr(obj)``. While
|
|
still pretty much readable, this format is not intended for humans. The advantage of this format is that once you
|
|
serialize your object, you can use ``eval()`` to get back the original structure; just make sure to ``import pyrogram``,
|
|
as the process requires the package to be in scope.
|
|
|
|
.. code-block:: python
|
|
|
|
import pyrogram
|
|
|
|
...
|
|
|
|
with app:
|
|
r = app.get_chat("haskell")
|
|
|
|
print(repr(r))
|
|
print(eval(repr(r)) == r) # True
|
|
|
|
.. note::
|
|
|
|
Type definitions are subject to changes between versions. You should make sure to store and load objects using the
|
|
same Pyrogram version. |