Comment générer un objet Python à partir de JSON

json - Sérialiseur de notation d'objets JavaScript \ -Python Module de la semaine Est une copie de

Pour plus d'explications, reportez-vous à Comment créer un objet Perl à partir de JSON \ -Qiita.

class MyObj(object):
    def __init__(self, s, y):
        self.s = s
        self.y = y

    def __repr__(self):
        return '<MyObj(%s)>' % self.s


def main():
    import json

    obj = MyObj('instance value goes here', "a")
    print(obj)

    # print('First attempt')
    try:
        print(json.dumps(obj))
    except TypeError, err:
        print("ERROR:", err)

    def convert_to_builtin_type(obj):
        # print('default(', repr(obj), ')')
        # Convert objects to a dictionary of their representation
        d = {'__class__': obj.__class__.__name__,
             '__module__': obj.__module__,
             }
        d.update(obj.__dict__)
        return d

    def dict_to_object(d):
        if '__class__' in d:
            class_name = d.pop('__class__')
            module_name = d.pop('__module__')
            module = __import__(module_name)
            # print('MODULE:', module)
            class_ = getattr(module, class_name)
            # print('CLASS:', class_)
            args = dict((key.encode('ascii'), value) for key, value in d.items())
            # print('INSTANCE ARGS:', args)
            inst = class_(**args)
        else:
            inst = d
        return inst

    # print('With default')

    json_txt = json.dumps(obj, default=convert_to_builtin_type)
    print(json_txt)

    obj2 = json.loads(json_txt, object_hook=dict_to_object)
    print(obj2)
    print(obj2.s)


if __name__ == '__main__':
    main()
    exit(0)

"""
<MyObj(instance value goes here)>
ERROR: <MyObj(instance value goes here)> is not JSON serializable
{"y": "a", "s": "instance value goes here", "__module__": "__main__", "__class__": "MyObj"}
<MyObj(instance value goes here)>
instance value goes here
"""

Recommended Posts

Comment générer un objet Python à partir de JSON
Comment ouvrir un navigateur Web à partir de python
Comment créer un objet fonction à partir d'une chaîne
Comment créer un fichier JSON en Python
Script Python qui crée un fichier JSON à partir d'un fichier CSV
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
Toucher les objets Python d'Elixir
[Introduction à Python] Comment analyser JSON
Comment accéder à wikipedia depuis python
Comment exécuter un programme Python à partir d'un script shell
Comment lancer AWS Batch à partir de l'application cliente Python
Comment générer une clé publique à partir d'une clé privée SSH
Script pour générer un répertoire à partir d'un fichier json
[Python] Comment rendre une classe itérable
Comment mettre à jour Google Sheets à partir de Python
[Python] Comment inverser une chaîne de caractères
Comment obtenir stacktrace en python
Comment accéder à RDS depuis Lambda (python)
Générer une classe à partir d'une chaîne en Python
Comment créer un référentiel à partir d'un média
Comment exécuter des scripts Maya Python
Comment obtenir une chaîne à partir d'un argument de ligne de commande en python
[Python] Comment obtenir et modifier les lignes / colonnes / valeurs d'une table.
Comment supprimer les doublons d'une liste Python tout en préservant l'ordre.
Envoyer un message de Slack à un serveur Python
Comment générer un nouveau groupe de journaux dans CloudWatch à l'aide de python dans Lambda
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Comment lire un fichier CSV avec Python 2/3
Comment effacer un taple dans une liste (Python)
Comment installer Python
Comment générer une séquence en Python et C ++
Comment incorporer des variables dans des chaînes python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Étude de Python Hour7: Comment utiliser les classes
Comment installer python
Comment lire JSON
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
[Introduction à Python] Comment gérer les données au format JSON
Comment ajouter un chemin de recherche de module Python
Comment bien gérer les commandes Linux à partir de Python
Comment extraire le coefficient de la formule minute
Comment notifier les canaux Discord en Python
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
[Python] Comment dessiner un histogramme avec Matplotlib
J'ai créé un outil pour générer du Markdown à partir du fichier JSON Scrapbox exporté
[Python] Comment supprimer facilement un processus enfant lancé par multiprocessus à partir d'un autre processus
[Python] Comment supprimer les valeurs en double de la liste
Analyser une chaîne JSON écrite dans un fichier en Python
Comment convertir / restaurer une chaîne avec [] en python
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Comment configurer un environnement Python à l'aide de pyenv
Je veux générer rapidement UUID (memo memo) ~ Edition Python ~
Comment récupérer des données d'image de Flickr avec Python