我正在尝试使用特定格式写入JSON。我尝试了不同的方法,使json.dump命令写入文件,以了解变量中数据的显示方式。任何建议,如尝试使用OrderDict和排序键,这是以前和在线推荐的
01/07/2020-以下是订单代码和JSON文件的创建代码
data =[]
subData=[]
subData=media_add()
data.append(OrderedDict(
{
"values": [ {
"CaseID": case_id,
"CaseMetadata": [
{
"CaseID":case_id,
"PropertyName":case_name,
"PropertyValue":case_value
}
],
"CaseNumber": case_num,
"ContactEmail": contact_email,
"ContactName": contact_name,
"ContactOrganization": contact_org,
"ContactPhone": contact_phone,
"ContactTitle": contact_title,
"Media": subData,
"TotalMediaFiles": len(final_results),
"TotalPrecategorized": 0,
"SeizureDate": autData[3][1],
"SourceApplicationName": "Autopsy",
"SourceApplicationVersion": autData[5][1]
}]}))
# Serializing json
json_object = json.dumps(data, indent=5)
# Writing to json file
filename= (case_name_fn + " " + date_fn + "." + time_fn + ".json")
with open(filename, "w") as outfile:
json.dump(data, outfile, sort_keys=True, indent = 4, ensure_ascii = False)
更新日期2020年9月4日 下午好,由于特定的需求,Python代码需要用Python 2.7编写。我曾尝试在2.7而不是3.6中像原始代码一样重做上述工作,但是我无法使转储保持在代码中编写的顺序。我已重新尝试使用OrderedDict,但失败
有没有其他方法可以不使用JSON.dump方法创建结构化JSON文件
要按插入值的相同顺序打印值,需要执行两项操作:
sort_keys=True
。这将按字母顺序对它们进行排序,而不是按插入顺序李>第二个是必要的,因为在Python 3.6之前,字典不记得插入元素的顺序。如果您设置了
x = {'a': 1, 'b': 2}
,然后对其进行迭代,那么您可能会按照'a', 'b'
或'b', 'a'
的顺序返回元素。它甚至可能在同一程序的两次运行之间发生变化如果您坚持使用Python 3.5或更早版本,那么可以使用
OrderedDict
。我知道你现在就是这么做的。但是您使用{...}
文字语法,它将值放在dict
中,因此在到达OrderedDict
之前,顺序已经丢失。相反,您必须使用列表或元组:。。。等等正如你所看到的,这是相当微妙的;升级Python版本可能更好。也许您只是偶然使用了Python2.7,因为这通常是在命令提示符下运行
python
得到的结果。在这种情况下,只需运行python3
就可以解决问题相关问题 更多 >
编程相关推荐