python - 如何使用 JSON.loads 转换为 Python 日期时间对象?

我有一个 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 的服务有何区别?

javascript - 短语对象文字表示法中的 "literal"是什么意思?

javascript - 使用 application/json 优于 text/plain 的优势