这是可能困扰您的各种映射集合之间的细微差别之一。JSON将键视为字符串;Python支持仅在类型上不同的独特键。
在Python中(显然在Lua中),映射的键(分别是字典或表)是对象引用。在Python中,它们必须是不可变的类型,或者它们必须是实现
__hash__方法的对象。(Lua的文档建议即使对于可变对象,它也会自动将对象的ID用作哈希/键,并依赖于字符串插入以确保等效的字符串映射到相同的对象)。
在Perl,Javascript,awk和许多其他语言中,哈希,关联数组或给定语言所调用的名称的键是字符串(或Perl中的“标量”)。在Perl
$foo{1},$foo{1.0}, and $foo{"1"}是在相同的对应的所有引用%foo-–关键是 评估 作为标!
JSON从Java序列化技术开始。(JSON代表 Ĵ AVA 小号 CRIPT ö bject Ñ
浮选。)当然它实现为它的映射符号的语义这与它的映射语义一致。
如果序列化的两端都将是Python,那么最好使用咸菜。如果您确实需要将这些从JSON转换回本机Python对象,我想您有两种选择。首先
try: ...except:...,如果字典查找失败,您可以尝试()将任何键转换为数字。或者,如果将代码添加到另一端(此JSON数据的序列化器或生成器),则可以让它对每个键值执行JSON序列化
将其作为键列表提供。(然后,您的Python代码将首先在键列表上进行迭代,将它们实例化/反序列化为本地Python对象…,然后使用那些键从映射中访问值)。



