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.

  • Buchstaben verschwommen / unscharf nach der Erntefunktion
  • Brauchen Sie Platz zwischen SubPlots für X-Achse Etikett hinzufügen, vielleicht entfernen Etikettierung von Achsen Kerben
  • Einbetten von matplotlib canvas in tkinter GUI - Plot wird nicht angezeigt, aber kein Fehler wird geworfen
  • Zoom in und aus Chrom Browser mit Selen mit Python
  • Schreiben Sie mehrere numpy Arrays in Datei
  • Vergleich von Listenverständnissen und expliziten Schleifen (3 Arraygeneratoren schneller als 1 für Loop)
  • 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.