Ich habe ein ähnliches Problem wie CalvinKrishys Problem Samplebias 'Lösung funktioniert nicht mit den Daten, die ich habe.
Ich benutze Python 2.7.
Hier sind die Daten:
Wie Sie sehen können, sind a1 und a2 die gleichen, außer dass eines namedtuple ist und das andere dict ist.
Aber die json.dumps ist anders:
%Vor%Ich möchte json-Format von a1 genau wie es für a2 tun.
Das Problem liegt in der Verwendung von namedtuple._asdict
, nicht json.dumps
. Wenn Sie sich den Code mit namedtuple(..., verbose=True)
ansehen, sehen Sie Folgendes:
Nur die oberste Ebene wird tatsächlich in ein OrderedDict geändert, alle enthaltenen Elemente bleiben unberührt. Dies bedeutet, dass verschachtelte namedtuple
s immer noch tuple
Unterklassen sind und (richtig) serialisiert werden und so.
Wenn der Aufruf einer bestimmten Konvertierungsfunktion für Sie akzeptabel ist (wie der Aufruf von _asdict
), können Sie einen eigenen schreiben.
Wie Sie sehen, besteht das größte Problem darin, verschachtelte Strukturen zu haben, die nicht namedtuple
s sind, sie aber enthalten könnten.
Tags und Links python json python-2.7 namedtuple