import json
import os
import shutil
import time
# import objectpath
import sys
import datetime
true = "true"
false = "false"
null = "null"
from datetime import datetime, timedelta
with open('./notificationsManagement/notifications.json') as json_file:
data = json.load(json_file)
day_start = 30
for tuple in data:
tuple['creationTime'] -= int(timedelta(days = day_start).total_seconds())
day_start -= 2
print(data)
text_file = open("output.json", "w")
text_file.write(str(data))
text_file.close()
我写了一个脚本是为了:
我鼓励了一些问题:
有什么建议吗?
答案 0 :(得分:2)
关于u'foo'
:
这是正常的Python行为,u'something'
表示您的字符串是Unicode字符串。 see more about Unicode strings here
只需使用此行将dict
编写为JSON字符串即可解决此问题,但是您应该始终使用json.dump()
(或json.dumps()
)写入JSON字符串:
text_file.write(json.dump(data))
关于按键顺序:
首先,JSON's RFC对此是明确的:
对象是零个或多个名称/值的无序集合 对,其中名称是字符串,值是字符串,数字, 布尔值,null,对象或数组。
在这里,“ object ”的意思是“ 哈希”,这就是我们在Python中所称的“ 字典”。这意味着从不对JSON字符串的键进行排序。
此外
data = json.load(json_file)
加载JSON字符串并将其解析为Python字典。
既不对Python字典进行排序(至少在Python3.7之前)。
这意味着两件事:
答案 1 :(得分:0)
关于问题2和3。
您应该在没有Unicode输出的情况下将其打印出来。
有关编写JSON文件的参考。
How do I write JSON data to a file?
关于问题3:
如果您想订购成为保存者,则应使用IButton
:
答案 2 :(得分:0)
您确定该程序实际上正在运行吗? (清理所有.pyc)
数据是字典,您遍历键(字符串)并将其像字典一样对待
for tuple in data:
tuple['creationTime'] -= int(timedelta(days = day_start).total_seconds())