从 JSON 序列化中排除空/null 值
我正在使用 Python 和 simplejson 将多个嵌套字典序列化为 JSON。
有没有办法自动排除空/空值?
例如,将其序列化为:
{
"dict1" : {
"key1" : "value1",
"key2" : None
}
}
将
{
"dict1" : {
"key1" : "value1"
}
}
Jackson 与 Java 结合使用时,您可以使用 Inclusion.NON_NULL
来执行此操作。有等效的 simplejson 吗?
I am serializing multiple nested dictionaries to JSON using Python with simplejson.
Is there any way to automatically exclude empty/null values?
For example, serialize this:
{
"dict1" : {
"key1" : "value1",
"key2" : None
}
}
to
{
"dict1" : {
"key1" : "value1"
}
}
When using Jackson with Java you can use Inclusion.NON_NULL
to do this. Is there a simplejson equivalent?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
示例用法:
然后您可以将其提供给
json
。Sample usage:
Then you can feed that to
json
.我的 Python3 版本的优点是不更改输入,以及递归到嵌套在列表中的字典:
例如:
结果如下:
My Python3 version of this has the benefit of not changing the input, as well as recursion into dictionaries nested in lists:
For example:
results in this:
一般来说,我不喜欢使用
del
,更改现有字典可能会产生微妙的影响,具体取决于它们的创建方式。创建删除None
的新词典可以防止所有副作用。I don't like using
del
in general, changing the existing dictionary can have subtle effects depending on how they are created. Creating new dictionaries withNone
removed prevents all side effect.你可以尝试这个方法。就我而言(我使用 python 3),它运行良好。
You can try this approach. In my case (I use python 3), it works well.
此解决方案是对 @eric 的上面的更正,它不处理
列表
正确输入。规范 JSON 字典中的 值 可以是以下 3 种类型之一:
字典
列表
字符串
、<代码>整数或浮点
)此解决方案(如下)与 @eric 的原始解决方案之间的本质区别在于
list
可以包含dictionary
类型的元素,我们希望从其中删除元素 <代码>无值。This solution is correction of the one above from @eric which does not handle
list
type corectly.Values in canonical JSON dictionary can be of one of following 3 types:
dictionary
list
string
,integer
orfloating point
)The essential difference between this solution (below) and the original one from @eric is that
list
can contain elements ofdictionary
type from iside of which we want to drop elements withNone
value.它对我有用:
当字典有 dict/list/tuple 值时......
例如,它是我的对象:
我写了这个函数:
然后当使用这个函数时:
输出是:
It works for me:
When dictionary has dict/list/tuple values ....
for example it is my object:
I wrote this function:
And then when use this fuction:
output is:
如果“url”在一个地方有价值,您是否可以保留它,如果在另一个地方没有价值,则可以删除它?
Could you maybe remain 'url' if it has value in one place and remove it if it none on another place?
我使用了 MatanRubin 函数并对其进行了扩展,以便它还可以过滤 Nan(浮点)和 Null(字符串),以便能够与 Php API 进行通信。
I used the MatanRubin function and extended it so that it also filters Nan (float) and Null (string) to be able to talk with a Php API.