Je crée une API simple qui crée des classes typées basées sur des données JSON qui ont un champ obligatoire 'type' défini dans celui-ci. Il utilise cette chaîne pour définir un nouveau type, ajouter les champs dans l'objet JSON, l'instancier, puis remplir les champs de l'instance.Liste toutes les classes qui existent actuellement
Ce que je veux être en mesure de faire est de permettre à ces types d'être éventuellement prédéfinis dans l'application qui utilise mon module. Cela permet d'ajouter des méthodes et d'autres attributs spécifiques aux applications introuvables dans l'objet JSON. J'aimerais que mon module vérifie si un type existe déjà, et si c'est le cas, utilisez-le au lieu de créer dynamiquement le type. Cela ajouterait encore des attributs à partir de l'objet JSON, mais ce serait le recyclage du type existant.
Mes données JSON est:
{
"type": "Person",
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
Mon code à ce jour (en supposant json_object est un dict à ce stade):
if not json_object.has_key('type'):
raise TypeError('JSON stream is missing a "type" attribute.')
##### THIS IS WHERE I WANT TO CHECK IF THE TYPE BY THAT NAME EXISTS ALREADY ####
# create a type definition and add attributes to it
definition = type(json_object['type'], (object,), {})
for key in json_object.keys():
setattr(definition, key, None)
# instantiate and populate a test object
tester = definition()
for key, value in json_object.iteritems():
setattr(tester, key, value)