import jsonimport osimport shutilimport time# import objectpathimport sysimport datetimetrue = "true"false = "false"null = "null"from datetime import datetime, timedeltawith open('./notificationsManagement/notifications.json') as json_file: data = json.load(json_file)day_start = 30for tuple in data: tuple['creationTime'] -= int(timedelta(days = day_start).total_seconds()) day_start -= 2print(data)text_file = open("output.json", "w")text_file.write(str(data))text_file.close()我写了一个脚本,以便:读取 Json 文件执行修改打印数据将新的有效 Json 文件输出为“output.json”我遇到的几个问题:Json 的元组乱序数据在每个标题前用“u”打印新文件包含相同的“u”(主要问题)有什么建议?
2 回答
绝地无双
TA贡献1946条经验 获得超4个赞
关于u'foo'
:
这是正常的 Python 行为,u'something'
意味着您的字符串是 Unicode 字符串。在此处查看有关 Unicode 字符串的更多信息
您可以通过使用此行将您的dict
JSON 字符串编写为 JSON 字符串来修复它,顺便说一句,您应该始终使用json.dump()
(或json.dumps()
) 来编写 JSON 字符串:
text_file.write(json.dump(data))
关于钥匙顺序:
首先,JSON 的 RFC对此进行了明确说明:
对象是零个或多个名称/值对的无序集合,其中名称是字符串,值是字符串、数字、布尔值、空值、对象或数组。
在这里,“对象”的意思是“哈希”,这就是我们在 Python 中所说的“字典”。这意味着 JSON 字符串的键永远不会被排序。
而且,
data = json.load(json_file)
加载一个 JSON 字符串并将其解析为 Python 字典。Python dicts 也没有排序(至少在 Python3.7 之前)。
这意味着两件事:
您无法按预期顺序读取 JSON 文件。
根据第 1 点,以特定顺序编写 JSON 字符串没有意义(因为您将无法以相同顺序读取它)
慕妹3146593
TA贡献1820条经验 获得超9个赞
你确定这真的在运行吗?(清理所有.pyc)
数据是一个字典,您遍历键(字符串)并将它们视为字典
for tuple in data: tuple['creationTime'] -= int(timedelta(days = day_start).total_seconds())
添加回答
举报
0/150
提交
取消