Exclure vide/valeurs null de la sérialisation JSON
Je suis la sérialisation de multiples imbriquées les dictionnaires en JSON à l'aide de Python avec simplejson.
Est-il possible d'exclure automatiquement les vides/les valeurs null?
Par exemple, sérialiser ce:
{
"dict1" : {
"key1" : "value1",
"key2" : None
}
}
à
{
"dict1" : {
"key1" : "value1"
}
}
Lors de l'utilisation de Jackson avec Java, vous pouvez utiliser Inclusion.NON_NULL
pour ce faire. Est-il un simplejson équivalent?
OriginalL'auteur simao | 2010-11-23
Vous devez vous connecter pour publier un commentaire.
Exemple d'utilisation:
Puis vous pouvez nourrir que de
json
.RuntimeError: dictionary changed size during iteration
avec Python 3.5def del_none(d): """ Delete keys with the value ``None`` and empty string in a dictionary, recursively. This does not alter input, but copies the dictionary. Child dictionaries are also copied. No other objects are copied. """ rez = d.copy() for key, value in d.items(): if value is None or value == '': del rez[key] elif isinstance(value, dict): rez[key] = del_none(value) return rez
J'ai mis à jour le code pour Python 3 avec des notes pour Python 2. Ce est écrit il y a sept ans! Je l'ai laissé comme une modification, cependant.
Attention... aucune de ces réponses recurse dans des listes. Dictionnaires figurant dans les listes continuera à être sérialisé avec toute les valeurs null présent.
OriginalL'auteur Chris Morgan
Je n'aime pas utiliser
del
en général, la modification de l'existant dictionnaire peut avoir des effets subtils, selon la façon dont ils sont créés. La création de nouveaux dictionnaires avecNone
retiré empêche tout effet secondaire.OriginalL'auteur eric
if d[k] is not None
au lieu deif not d[k]
– sinon les cordes à vide et 0 les valeurs seront également exclues de la sortie.OriginalL'auteur utapyngo