User Tools

Site Tools


object_-_json

This is an old revision of the document!


Il est possible d'utiliser le module json de python, mais aussi le module jsonpickle, plus simple d'usage, afin de transformer des objets en json, et inversement.

Notes

Pour pouvoir faire l'opération json → objet, il est nécessaire que l'objet soit défini, il sera sinon transformé en dictionnaire.

Par exemple, imaginons un programme qui ouvre un .json contenant la serialisation json d'un objet <machin>, et en décode le contenu. Si la class machin est définie au sein du programme, la serialisation json sera convertie en objet de type machin. Si la classe n'est pas définie, la sérialisation deviendra un objet de type dict dont les propriétés seront accessibles sous la forme monDict[“mapropriété”].

objet -> json -> file :
# -*- coding: utf-8 -*-
import jsonpickle

class myObject(object):
	"""Basic object"""
	myFirstProperty = None
	mySecondProperty = None

class myObjectInterface(object):
	"""Generic interface for myObject"""
	def __init__(self,target):
		self.target = target

	def updateMyFirstProperty(self,newValue):
		self.target.myFirstProperty = newValue

	def updateMySecondProperty(self,newValue):
		self.target.mySecondProperty = newValue


o = myObject()
_o = myObjectInterface(o)

_o.updateMyFirstProperty('test')
_o.updateMySecondProperty('essai')

o_json = jsonpickle.encode(o)
o2 = jsonpickle.decode(o_json)
print o_json
print(o2.myFirstProperty)
print(o2.mySecondProperty)

f = open("savedJSON.json",'w')
f.write(o_json)
f.close()
file -> json -> objet :
# -*- coding: utf-8 -*-
import jsonpickle

class myObject(object):
	"""Basic object"""
	myFirstProperty = None
	mySecondProperty = None

class myObjectInterface(object):
	"""Generic interface for myObject"""
	def __init__(self,target):
		self.target = target

	def updateMyFirstProperty(self,newValue):
		self.target.myFirstProperty = newValue

	def updateMySecondProperty(self,newValue):
		self.target.mySecondProperty = newValue

f = open("savedJSON.json","r+")
o_json = f.read()
f.close()
o = jsonpickle.decode(o_json)

print o_json
print o
print(o.myFirstProperty)
print(o.mySecondProperty)
object_-_json.1434711297.txt.gz · Last modified: 2015/06/19 12:54 by 86.73.246.173