J'ai un peu de mal à commander ma sortie JSON. Ci-dessous est la classe Rolodex, qui contient les deux entrées de listes et les erreurs. Maintenant, la sortie est correctement formatée, comme indiqué ci-dessous, mais j'ai des problèmes avec la manière dont elle est commandée.Commander une vidage JSON par une valeur dans l'une des listes de la classe en python
class Rolodex:
def __init__(self):
self.entries = []
self.errors = []
class Entry:
def __init__(self):
color = None
firstname = None
lastname = None
phonenumber = None
zipcode = None
def encode_rolo(obj):
if isinstance(obj, Entry):
return obj.__dict__
else:
raise TypeError("Unserializable object {} of type {}".format(obj,type(obj)))
output.write(json.dumps(rolo.__dict__, sort_keys=True, indent=4, separators=(',', ': '), default=encode_rolo).encode('utf-8'))
Voici la sortie (tronquée):
{
"entries": [
{
"color": "aqua marine",
"firstname": "Ria",
"lastname": "Tillotson",
"phonenumber": "196-910-5548",
"zipcode": "97671"
},
{
"color": "blue",
"firstname": "Annalee",
"lastname": "Loftis",
"phonenumber": "905-329-2054",
"zipcode": "97296"
},
...
],
"errors": [
1,
6,
...
]
}
Comme vous pouvez le voir, les touches dans la liste des entrées sont commandés très bien. Mais je veux être en mesure de commander les entrées par (nom, prénom). Y at-il un moyen de le faire avec json.dumps?
Avez-vous essayé de trier les entrées avant 'json.dumps'? – dizballanze
Cela fonctionne. Que je suis bête. Le code ajouté: 'rolo.entries = trié (rolo.entries, key = attrgetter ('lastname', 'firstname'))' – mike10010100