我正在使用Python和simplejson将多个嵌套字典序列化为JSON。
是否有任何方法可以自动排除空/null值?
例如,序列化以下内容:
{
"dict1" : {
"key1" : "value1",
"key2" : None
}
}
到
{
"dict1" : {
"key1" : "value1"
}
}
在Java中使用Jackson时,你可以使用Inclusion.NON_NULL
来实现这一点。有simplejson的等价物吗?
9条答案
按热度按时间c7rzv4ha1#
样品使用:
然后你可以把它馈送到
json
。ix0qys7i2#
我的Python 3版本的好处是不改变输入,以及递归到嵌套在列表中的字典:
例如:
结果是:
ckx4rj1h3#
我一般不喜欢使用
del
,更改现有的字典可能会产生微妙的影响,具体取决于它们是如何创建的。创建新的字典并删除None
可以防止所有副作用。gywdnpxw4#
你可以尝试这种方法。在我的情况下(我使用python 3),它工作得很好。
ijxebb2r5#
这个解决方案是对@eric中的one above的修正,它不能正确处理
list
类型。规范JSON字典中的值可以是以下3种类型之一:
dictionary
list
string
、integer
或floating point
)注意:假设我们在这里处理的是canonicalJSON dictionary,它实际上只能包含上面提到的类型。如果dictionary包含其他类型,而不是上面提到的类型(例如元组,自定义类,...),那么这个解决方案将无法按预期工作。
这个解决方案(下面)和@eric的原始解决方案之间的本质区别在于,
list
可以包含dictionary
类型的元素,我们希望从其中删除值为None
的元素。注意:请记住,我们必须不从列表中删除
None
元素,因为这会影响列表数据的结构完整性。如果某些(或所有)列表元素具有None
值,则它们应保持在列表结构中,以保持列表的原始结构意义/完整性。wlzqhblo6#
tquggr8v7#
它对我有效:
当字典有dict/list/tuple值时....
例如,它是我的对象:
我写了这个函数:
然后在使用此功能时:
输出为:
1sbrub3j8#
如果url在一个地方有值,你可以保留它,如果它在另一个地方没有值,你可以删除它吗?
t5fffqht9#
我使用了MatanRubin函数,并对其进行了扩展,使其还可以过滤Nan(浮点数)和Null(字符串),以便能够与Php API进行对话。