【发布时间】:2020-12-31 03:24:37
【问题描述】:
我正在使用基于 python 的 API 处理消息传递服务。 API 完成了大部分反序列化工作,将消息呈现到 python 字典中。但是,在某些情况下,呈现的字典包括元数据键/值对,其中值是尚未反序列化的字典的字符串呈现。我创建了一个简单的反序列化方法,但我不得不反复修改它以涵盖 python 和 JSON 之间的三个区别,即单引号与双引号、布尔值的大小写差异以及 None 与 null:
def deserializeMetaData(metaDataStr):
metaDataStr = metaDataStr.replace("'",'"').replace('True', 'true').replace('False', 'false').replace('None', 'null')
metaDataDict = json.loads(metaDataStr)
return metaDataDict
metaDataStr = "{'SomeCount': 1, 'SomeOtherCount': 2, 'SomeBool': True, 'SomethingElse': None}"
deserializeMetaData(metaDataStr)
{'SomeCount': 1, 'SomeOtherCount': 2, 'SomeBool': True, 'SomethingElse': None}
像我反复调用replace 一样,针对特定的极端情况似乎是一种非常糟糕的做法。是否有另一种方法可以更好地涵盖这些和所有极端情况?
【问题讨论】:
-
为什么不使用有效的序列化程序?
-
@ScottHunter 你能详细说明一下吗?不确定什么是有效的反序列化器。
-
产生有效 JSON 的;喜欢
json.dumps。
标签: python json deserialization