Wie kann ich sagen, jsonpickle welche Klasse zu erstellen, wenn Deserialisierung von json, die nicht haben jsonpickle Metadaten / Typ Informationen

Ich bin neu in Python, aber in anderen Sprachen habe ich in der Lage, einen Serializer zu sagen, welche Art ich will erstellt und lassen Sie es deserialisieren oder binden die Eigenschaften auf Reflexion / Introspektion.

Jsonpickle fügt Typ-Informationen an die json, wenn Sie es mit jsonpickle serialisieren, aber in diesem Fall die json ich bekomme kommt aus einer externen Quelle und hat nicht die Typ Metadaten in ihm.

  • Matplotlib PDF Export verwendet falsche Schriftart
  • Matplotlib: yaxis tick etiketten ändern
  • Pandas: Überlappende Zeitzählung
  • Wie kann ich eine python-pickle-Datenbank / Datei von C lesen?
  • Wertfehler bei mehrfacher xarray-Variable mit 2D-Numpy-Array
  • Bibliothek zur Darstellung von 3D-Polyedern
  • Ich möchte die Typinformationen einfach an einen Serializer weitergeben.

    import jsonpickle class TestObject(object): @property def name(self): return self._name @name.setter def name(self, value): self._name = value #from an external source jsons = '{ "name" : "Test" }' 

    Ich würde erwarten, dass ich einfach so etwas machen könnte:

     jsonpickle.decode(jsons,TestObject) 

    Hier ist ein C # Beispiel meiner Frage: http://james.newtonking.com/json/help/index.html?topic=html/M_Newtonsoft_Json_JsonConvert_DeserializeObject_3.htm

    Die c # würde aussehen:

     public class TestObject { public string Name { get;set; } } var json = "{ "name" : "Test" }"; var deserialized = JsonConvert.DeserializeObject(json,typeof(TestObject)); 

    Ich weiß, Python ist nicht getippt, etc … aber es gibt keinen Grund, warum ich müssen, um mit Wörterbuch-Karten zu verwirren, nur um grundlegende Serialisierung zu tun.

    One Solution collect form web for “Wie kann ich sagen, jsonpickle welche Klasse zu erstellen, wenn Deserialisierung von json, die nicht haben jsonpickle Metadaten / Typ Informationen”

    Zuerst ist das Beispiel json Ausgang, den du zur Verfügung gestellt hast, nicht das, was jsonpickle ausgibt. Stattdessen würde eine codierte Instanz des von Ihnen definierten TestObjects so aussehen:

     '{"py/object": "__main__.TestObject", "_name": 4}' 

    Beachten Sie, dass der Typ zusammen mit den Instanzvariablen codiert ist. Der dekodierte Ausgang wird magisch wieder in seinen ursprünglichen Typ gebracht:

     jsonpickle.decode('{"py/object": "__main__.TestObject", "_name": 4}') 

    Wird eine TestObject-Instanz sein.

    Python ist die beste Programmiersprache der Welt.