我有一个 JSON 对象的字符串表示形式。
dumped_dict = '{"debug": false, "created_at": "2020-08-09T11:24:20"}'
当我用这个对象调用 json.loads 时;
json.loads(dumped_dict)
我明白了;
{'created_at': '2020-08-09T11:24:20', 'debug': False}
这里没有错。但是,我想知道是否有办法将上面带有 json.loads 的对象转换成这样的:
{'created_at': datetime.datetime(2020, 08, 09, 11, 24, 20), 'debug': False}
简而言之,我们是否能够将日期时间字符串转换为实际的 datetime.datetime 对象,同时 调用 json.loads?
最佳答案
到目前为止我的解决方案:
>>> json_string = '{"last_updated": {"$gte": "Thu, 1 Mar 2012 10:00:49 UTC"}}'
>>> dct = json.loads(json_string, object_hook=datetime_parser)
>>> dct
{u'last_updated': {u'$gte': datetime.datetime(2012, 3, 1, 10, 0, 49)}}
def datetime_parser(dct):
for k, v in dct.items():
if isinstance(v, basestring) and re.search("\ UTC", v):
try:
dct[k] = datetime.datetime.strptime(v, DATE_FORMAT)
except:
pass
return dct
有关使用 object_hook 的进一步引用:JSON encoder and decoder
在我的情况下,json 字符串来自对我的 REST API 的 GET 请求。只要输入字符串符合 DATE_FORMAT 即:
DATE_FORMAT = '%a, %d %b %Y %H:%M:%S UTC'
正则表达式模式可能应该进一步完善
PS:如果您想知道,json_string 是一个 MongoDB/PyMongo 查询。
https://stackoverflow.com/questions/8793448/
相关文章:
ruby - 为什么我会得到 "no implicit conversion of String i
json - 如何将对象映射到数组以便可以将其转换为 csv?
c# - 强制 JSON.NET 在序列化 DateTime 时包含毫秒(即使 ms 组件为零)
python - 使用 simplejson 序列化简单类对象的最简单方法?
ios - (Cocoa 错误 3840。)“(字符 0 周围的值无效。)AFNetworking
python - 使用 JSON 模块进行 pretty-print 时如何实现自定义缩进?
objective-c - 使用 Json 在 Objective C 中发布数据
jquery - REST Web 服务与类似 RPC 的服务有何区别?