以下输入是JSON数组 . 我将以下数据传递给我的Python方法 .
input={"details": [{"first": [
{"id": "111", "flag": "T", "planName": "PPO"},
{"id": "123", "flag": "F", "planName": "HMO"},
{"id": "133", "flag": "T", "planName": "MA"}],
"second": [{"planName": "PPO", "planRank": "3"},
{"planName": "HMO", "planRank": "4"},
{"planName": "MA", "planRank": "7"}]}]}
以下是JSON现有文件,
final.json
{"first": [{"id": "111", "flag": "T", "planName": "EPO"},
{"id": "133", "flag": "T", "planName": "HMO"},
{"id": "123", "flag": "T", "planName": "MA"}],
"second": [{"planName": "PPO", "planRank": "1"},
{"planName": "HMO", "planRank": "1"},
{"planName": "MA", "planRank": "1"}]}
当我将上面的输入数据传递给我的Python方法时,现有JSON文件中的相应字段应该更新 . 当我的输入JSON与现有的id的JSON匹配时,那么'flag'和'planname'应该用传递的值更新来自输入JSON .
从第二个匹配'planName'时,应该使用从输入传递的新值更新PlanRank .
预期输出(现有JSON文件应获得如下更新):
final.json
{"first": [{"id": "111", "flag": "T", "planName": "PPO"},
{"id": "133", "flag": "T", "planName": "MA"},
{"id": "123", "flag": "F", "planName": "HMO"}],
"second": [{"planName": "PPO", "planRank": "3"},
{"planName": "HMO", "planRank": "4"},
{"planName": "MA", "planRank": "7"}]}
我试过下面的代码,但没有运气 .
def update_json():
input={"details": [{"first": [
{"id": "111", "flag": "T", "planName": "PPO"},
{"id": "123", "flag": "F", "planName": "HMO"},
{"id": "133", "flag": "T", "planName": "MA"}],
"second": [{"planName": "PPO", "planRank": "3"},
{"planName": "HMO", "planRank": "4"},
{"planName": "MA", "planRank": "7"}]}]}
for x in input:
property = open("final.json")
data = json.load(property)
for y in range(len(data)):
for o in range(len(data['first'])):
if (data['first'][o]['id'] == input[x][0]['id']):
data['first'][o]['planName'] = input[x][0]['planName']
data['first'][o]['flag'] = input[x][0]['flag']
for j in range(len(data['second'])):
print(data['details'][j])
if (data['second'][j]['planName'] == input[x][0]['planName']):
data['second'][j]['planRank'] = input[x][0]['planRank']
with open(("final.json"), 'w') as file:
value = json.dumps(data)
file.write(value)
return "value"
1 回答
你真的不应该把任何东西存储到变量
input
,因为input
是一个内置的python函数 .我尽力保持你的编码风格 .
这适用于上面的例子: