Json 在Python中将带有Datetime字段的MongoDB查询字符串转换为Dict
我有一个字符串,如下所示,Json 在Python中将带有Datetime字段的MongoDB查询字符串转换为Dict,json,python-3.x,datetime,dictionary,serialization,Json,Python 3.x,Datetime,Dictionary,Serialization,我有一个字符串,如下所示, s=“查询:{'$and':[{'$or':[{'Component':'pfr'},{'Component':'ng pfr'},{'Component':'common flow table'},{'Component':'media mon'},{'Submitted on':{'gte':datetime.datetime(2016,2,21,0,0)},{'Submitted on':'lte:datetime.datetime(2016,2,28,0,0)
s=“查询:{'$and':[{'$or':[{'Component':'pfr'},{'Component':'ng pfr'},{'Component':'common flow table'},{'Component':'media mon'},{'Submitted on':{'gte':datetime.datetime(2016,2,21,0,0)},{'Submitted on':'lte:datetime.datetime(2016,2,28,0,0)}
“
这是一个存储在字符串中的MongoDB查询。如何在Python中将其转换为Dict或JSON格式您的格式不是标准格式,因此您需要一个黑客程序才能获得它
import json
s = " query : {'names' :['abc','xyz'],'location':'India'}"
key, value = s.strip().split(':', 1)
r = value.replace("'", '"')
data = {
key: json.loads(r)
}
从您的评论来看:datetime
带来了问题。然后,我向大家介绍hack of hack:函数eval
import datetime
import json
s = " query : {'names' :['abc','xyz'],'location':'India'}"
key, value = s.strip().split(':', 1)
# we can leave out the replacing, single quotes is fine for eval
data = {
key: eval(value)
}
注意eval
-尤其是在未初始化的输入上-非常不安全
注意:在第一种情况下,黑客行为将被破坏,例如,因为值或键包含引号字符 它抛出一个错误,如下所示:在第
key:JSON.loads(r)
行,无法解码任何JSON对象。我尝试使用简单的json来获得详细的错误通知,但不幸的是,该模块不可用,并且我没有添加模块的权限。我发现是datetime对象导致了问题