python中的json到字典
这是我的json文件输入python中的json到字典,python,json,python-3.x,Python,Json,Python 3.x,这是我的json文件输入 {"Report":{"id":101,"type":"typeA","Replist":[{"rptid":"r001","subrpt":{"subid":74,"subname":"name1","subval":113},&q
{"Report":{"id":101,"type":"typeA","Replist":[{"rptid":"r001","subrpt":{"subid":74,"subname":"name1","subval":113},"RelsubList":[{"Relid":8,"Relsubdetails":{"Rel_subname":"name8","Rel_Subval":65}},{"Relid":5,"Relsubdetails":{"Rel_subname":"name5","Rel_Subval":40}}],"fldA":30,"fldB":23}]}}
...
我正在编写python程序,将输入转换为字典中的以下格式。
我是python新手
预期产出:
out: {"id": "101", "type": "typeA", "rptid": "r001", "subrpt_subid": "74", "subrpt_subname": "name1", "subrpt_subval":"113","Relid":"8","Rel_subname":"name8","Rel_Subval":"65","Relid":"5","Rel_subname":"name5","Rel_Subval":"40","fldA":"30","fldB":"23"
我使用以下逻辑将输出转换为subrpt
电流输出:
输出:{'id':'101','type':'typeA','rptid':'r001','subrpt_subid':'74','subrpt_subname':'name1','subrpt_subval':'113'}
但是我正在努力获取RelsubList的逻辑(看起来它既有list又有dictionary[{}])。
请帮我得到同样的逻辑
import json
list1 = []
dict1 = {}
dict2 = {}
data_file = "samp1.json"
file = open(data_file)
for line in file:
json_line = json.loads(line)
json_line = json_line["Report"]
dict1["id"]=str(json_line["id"])
dict1["type"] = str(json_line["type"])
json_line = json_line["Replist"]
dict1["rptid"]= str(json_line[0]["rptid"])
dict1["subrpt_subid"] = str(json_line[0]["subrpt"]["subid"])
dict1["subrpt_subname"] = str(json_line[0]["subrpt"]["subname"])
dict1["subrpt_subval"] = str(json_line[0]["subrpt"]["subval"])
print("out:", dict1)
您的一些逻辑让我感到困惑,例如,为什么要在每个循环中执行json.loads(line) 无论如何,下面应该为您提供RealsubList的逻辑:
import json
f = open("data.json")
data = json.load(f)
for line in data:
relsublist = data["Report"]["Replist"][0]["RelsubList"]
print(relsublist)
结果:
[{'Relid': 8, 'Relsubdetails': {'Rel_subname': 'name8', 'Rel_Subval': 65}}, {'Relid': 5, 'Relsubdetails': {'Rel_subname': 'name5', 'Rel_Subval': 40}}]
[“Replist”]后面的[0]索引的原因是Replist包含嵌套字典数组,因此需要按索引调用它。在这种情况下,它只是一个数组,因此它将是0您的“预期输出”具有重复的键(Relid
、Rel\u subname
和Rel\u subvalue
),这在dict
中是不可能的。