So generieren Sie ein Python-Objekt aus JSON

json - JavaScript Object Notation Serializer \ -Python-Modul der Woche Ist eine Kopie von

Weitere Erläuterungen finden Sie unter Erstellen eines Perl-Objekts aus 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

So generieren Sie ein Python-Objekt aus JSON
So öffnen Sie einen Webbrowser über Python
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
So erstellen Sie eine JSON-Datei in Python
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
Berühren Sie Python-Objekte in Elixir
[Einführung in Python] So analysieren Sie JSON
So greifen Sie über Python auf Wikipedia zu
So führen Sie ein Python-Programm in einem Shell-Skript aus
So starten Sie AWS Batch über die Python-Client-App
So generieren Sie einen öffentlichen Schlüssel aus einem privaten SSH-Schlüssel
Skript zum Generieren eines Verzeichnisses aus einer JSON-Datei
[Python] Wie man eine Klasse iterierbar macht
So aktualisieren Sie Google Sheets von Python
[Python] So invertieren Sie eine Zeichenfolge
Wie bekomme ich Stacktrace in Python?
Zugriff auf RDS von Lambda (Python)
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
So erstellen Sie ein Repository aus Medien
So führen Sie Maya Python-Skripte aus
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
[Python] So erhalten und ändern Sie Zeilen / Spalten / Werte aus einer Tabelle.
So entfernen Sie Duplikate aus einer Python-Liste unter Beibehaltung der Reihenfolge.
Senden Sie eine Nachricht von Slack an einen Python-Server
So generieren Sie eine neue Protokollgruppe in CloudWatch mit Python in Lambda
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
Lesen einer CSV-Datei mit Python 2/3
So löschen Sie einen Taple in einer Liste (Python)
So installieren Sie Python
So generieren Sie eine Sequenz in Python und C ++
Einbetten von Variablen in Python-Strings
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Studie aus Python Hour7: Verwendung von Klassen
So installieren Sie Python
Wie man JSON liest
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
[Einführung in Python] Umgang mit Daten im JSON-Format
So fügen Sie einen Suchpfad für Python-Module hinzu
Wie man gut mit Linux-Befehlen aus Python umgeht
So extrahieren Sie den Koeffizienten aus der Minutenformel
So benachrichtigen Sie Discord-Kanäle in Python
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Ich habe ein Tool zum Generieren von Markdown aus der exportierten Scrapbox-JSON-Datei erstellt
[Python] So löschen Sie einfach einen untergeordneten Prozess, der durch Multiprozess gestartet wurde, von einem anderen Prozess
[Python] So entfernen Sie doppelte Werte aus der Liste
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
So richten Sie eine Python-Umgebung mit pyenv ein
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
So kratzen Sie Bilddaten von Flickr mit Python