将字符串转换为类型对象 - Python
问题描述:
我已经创建了一个DataStore,并且数据存储中的字段类型已经以json格式保存。 喜欢的东西将字符串转换为类型对象 - Python
{"SchemaName": "Caztor", "FieldType": {"cain": "<type 'float'>"}}
现在,当我使用json.load加载JSON,场该隐的类型被加载为Unicode。 python中是否有预定义的方法可用于将此String类型转换为Type对象。当然,我可以做一个处理和解决问题的功能。但是,如果在python库中已经有了解决方案,那么它将节省一些开销,并且可能比我更有效地处理该问题。
答
没有解决方案。 JSON是跨所有语言的通用格式,因此它能够存储Python类是没有意义的。您需要定义一种在字符串和类型之间来回切换的固定方式,其中包括确定哪些类型可接受。以下是一个示例:
class Example(object):
pass
json_types = [int, float, str, Example]
string_to_type_dict = {t.__name__: t for t in json_types}
assert len(string_to_type_dict) == len(json_types)
def string_to_type(s):
return string_to_type[s]
def type_to_string(t):
return t.__name__
答
您可以使用模块pickle来解决类型转换。该模块可序列化的情况下转换成字符串 的文件出现在https://docs.python.org/2/library/pickle.html
例
import pickle
schema = {"SchemaName": "Caztor", "FieldType": {"cain": float}}
result = pickle.dumps(schema) # Will result a string
反序列化使用:
result2 = pickle.loads(result) # Will result a dictionary with typecast
+1
这实际上可能是比我更好的答案,因为问题意味着数据只能由Python编写和读取,在这种情况下使用JSON是毫无意义的。我的答案只有在不同的语言需要解析类型时才有用。使用泡菜也将更容易存储自定义类等。 –
你是如何创造这个JSON文件?在Python 2和3类型中都不是JSON可序列化的。 –
使用python json模块并保存对象的字典 –