python3 json.dumps_如何使用Python 3 json.dumps修复JSON密钥顺序?

我注意到

Python 3的json.dumps实现有一些奇怪的行为,即每次我将同一个对象从执行转储到执行时,键顺序都会改变.谷歌搜索没有工作,因为我不关心按键排序,我只是希望它们保持不变!这是一个示例脚本:

import json

data = {

'number': 42,'name': 'John Doe','email': 'john.doe@example.com','balance': 235.03,'isadmin': False,'groceries': [

'apples','bananas','pears',],'nested': {

'complex': True,'value': 2153.23412

}

}

print(json.dumps(data,indent=2))

当我运行此脚本时,每次都会得到不同的输出,例如:

$python print_data.py

{

"groceries": [

"apples","bananas","pears"

],"isadmin": false,"nested": {

"value": 2153.23412,"complex": true

},"email": "john.doe@example.com","number": 42,"name": "John Doe","balance": 235.03

}

但后来我再次运行它,我得到:

$python print_data.py

{

"email": "john.doe@example.com","balance": 235.03,"groceries": [

"apples","number": 42

}

我知道字典是无序集合,并且顺序基于散列函数;但是在Python 2中 – 顺序(无论它是什么)是固定的,并且不会在每次执行的基础上改变.这里的困难在于它使我的测试难以运行,因为我需要比较两个不同模块的JSON输出!

知道发生了什么事吗?怎么解决?请注意,我想避免使用OrderedDict或执行任何排序,重要的是字符串表示在执行之间保持不变.此外,这仅用于测试目的,对我的模块的实现没有任何影响.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值