我有以下json对象(说car_details.json):
{
"name":"John",
"age":30,
"cars":
[
{
"car_model": "Mustang",
"car_brand": "Ford"
},
{
"car_model": "cx-5",
"car_brand": "Mazda"
}
}
我想通过python代码将car_model的值从cx-5更改为cx-9。 我通过外部文件提供了此元素的json路径。 json-path表达式基本上表示为字符串。像这样: “汽车[2] .car_model” 并且新值也通过外部文件作为字符串提供: 'cx-9'
现在我该如何使用jsonpath表达式通过car_details.json进行解析,并将其值更改为以字符串形式提供的值,最后返回修改后的json对象
P.S我想通过python代码做到这一点
答案 0 :(得分:0)
这是不使用json模块的方法。将数据加载到变量中。然后遍历汽车的键/值。如果找到要查找的键,则将其设置为新值。
还请注意:您需要关闭数组块,否则上述json无效。通常,我使用在线json解析器检查我的数据是否有效等(将来可能会有所帮助)。
data = {
"name":"John",
"age":30,
"cars":
[
{
"car_model": "Mustang",
"car_brand": "Ford"
},
{
"car_model": "cx-5",
"car_brand": "Mazda"
}
]
}
for cars in data['cars']:
for key, value in cars.items():
if key == "car_model" and value == "cx-5":
cars[key] = "cx-9"
print(data)
如果您想从文件中加载json对象,我们假设它被称为“ data.json”,并且与您要运行的python脚本位于同一目录:
import json
with open('data.json') as json_data:
data = json.load(json_data)
for cars in data['cars']:
for key, value in cars.items():
if key == "car_model" and value == "cx-5":
cars[key] = "cx-9"
print(data)
现在,如果您要将内容写到原始文件或新文件中,在这种情况下,我正在写一个名为“ newdata.json”的文件:
import json
import re
with open('data.json') as json_data:
data = json.load(json_data)
print(data)
with open('external.txt') as f:
content = f.read()
print(content)
for cars in data['cars']:
for key, value in cars.items():
if key == "car_model" and value == "cx-5":
cars[key] = content
with open('newdata.json', 'w') as outfile:
json.dump(data, outfile)