2024-09-27 21:27:02 发布
网友
我得到了一个带有键"sera:blah"的JSON对象
"sera:blah"
由于冒号是无效的属性名,如何使用棉花糖库将该对象反序列化为python数据类型
编辑:
因此python中的类不能接受porperty名称中的冒号。这是无效的语法
编辑2:
理想情况下,我希望有一个棉花糖内的解决办法
棉花糖使用data_key属性处理这个问题
data_key
class MySchema(ma.Schema): sara_blah = ma.fields.String(data_key="sara_blah")
(这是棉花糖3语法。棉花糖2使用了load_from和dump_to。)
load_from
dump_to
我看你可以用这个走两条路
object_hook
我对后者进行了扩展(我认为后者更合适)
from json import loads, JSONDecoder s = """{ "obj1": 123, "list": [ {"example2": 42}, {"sera:blah": false}, {"object:3": {"nest:ed": "obj"}} ] }""" data = loads(s) print(data) def obj_transform(obj): for key in obj.keys(): # Iterate through obj if ':' in key: obj[key.replace(':', '_')] = obj.pop(key) return obj decoder = JSONDecoder(object_hook=obj_transform) print(decoder.decode(s))
此操作的结果将打印:
{'obj1': 123, 'list': [{'example2': 42}, {'sera:blah': False}, {'object:3': {'nest:ed': 'obj'}}]} {'obj1': 123, 'list': [{'example2': 42}, {'sera_blah': False}, {'object_3': {'nest_ed': 'obj'}}]}
这看起来像是你在寻找的,对你输入的棉花糖进行消毒
棉花糖使用
data_key
属性处理这个问题(这是棉花糖3语法。棉花糖2使用了
load_from
和dump_to
。)我看你可以用这个走两条路
object_hook
函数。然后在将其喂入棉花糖之前调用^{我对后者进行了扩展(我认为后者更合适)
此操作的结果将打印:
这看起来像是你在寻找的,对你输入的棉花糖进行消毒
相关问题 更多 >
编程相关推荐