在Python中json.dumps文件无法处理{integer:'string',}的字典

2024-10-03 09:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找答案,但是没有一个答案特别有用。我有一个必须转换成JSON字符串的值字典。数据如下:

In [127]: ddd
Out[127]: 
{'ID': {'condition': '',
  'data': {1: '2',
   2: '3',
   3: '4',
   4: '5',
   5: '6',
   6: '7',
   7: '8',
   8: '9',
   9: '10'},
  'desc_long': 'Id szko\xc5\x82y',
  'desc_short': 'Id szko\xc5\x82y',
  'df_name': 'pierszytest',
}}

当我试图执行json.dumps文件(ddd)我得到:

^{pr2}$

我创建了一个测试变量“what”

In [126]: what
Out[126]: {1: '2', 2: '3', 3: '4', 4: '5', 5: '6', 6: '7', 7: '8', 8: '9', 9: '10'}

在json.dumps文件(什么)回报:

Out[129]: '{"1": "2", "2": "3", "3": "4", "4": "5", "5": "6", "6": "7", "7": "8", "8": "9", "9": "10"}'

再次,我试图只转换ddd['ID']['data']:

 In [131]: ddd['ID']['data']
 Out[131]: {1: '2', 2: '3', 3: '4', 4: '5', 5: '6', 6: '7', 7: '8', 8: '9', 9: '10'}

 In [130]: json.dumps(ddd['ID']['data'])

 TypeError: keys must be a string

所以,这基本上是相同的变量json.dumps文件不能处理后者。这对我来说是个大惊喜。我做了一些研究,但对我的案子没有任何帮助。如果是复制品,请告诉我。在

*编辑* 我在两个变量上附加了type()的结果:

In [132]: type(ddd['ID']['data'])
Out[132]: dict

In [133]: type(what)
Out[133]: dict

Tags: 文件答案inidjsondatatypeout
2条回答

错误消息正确;根据the JSON standard,JSON对象中的键必须是字符串:

object = begin-object [ member *( value-separator member ) ]
         end-object
member = string name-separator value

因此,要么选择JSON之外的其他格式,要么让键成为字符串。在您的例子中,您希望将numpy.int64变量转换为字符串;请尝试以下操作:

^{pr2}$

事实上,Json需要一个字符串作为键。它们的键必须是整数吗?当您将json反序列化为manage类型转换时,只需考虑到这一点。在

反序列化时: int(key)得到整数。我认为是可能的。在

相关问题 更多 >