Мне удалось получить значения для значений data1, data2... с помощью функции data.get в Python.
data = json.load(file.json)
print(f"##vso[task.setvariable variable=var1;isOutput=true]{data.get('A', {}).get('key1', {})}")
Однако я хочу использовать ту же технику для получения значений X и Y для определенной проверки синтаксиса в моем файле json.
{
"A": {
"key1": "data1"
"key2": "data2",
"key3": "data3"
},
"B": {
"X": {
"key4": "data4",
},
"Y": {
"key5": "data5",
}
}
}
Я пытался использовать следующее, но я также получаю ключи key4 и key5 на B.
print(f"##vso[task.setvariable variable=var1;isoutput=true]{data.get('B', {})}")
Я хотел получить только значение самого X или Y, а не то, что отображается внутри.
Кто-нибудь может помочь? Спасибо!






Расширение комментария @deceze:
keys = list(data.get('B', {}).keys())
print(f"##vso[task.setvariable variable=var1;isoutput=true]{keys}")
значение keys будет:
['X', 'Y']
Вы имеете дело с вложенным словарем после загрузки JSON.
import json
data_str = """{
"A": {
"key1": "data1",
"key2": "data2",
"key3": "data3"
},
"B": {
"X": {
"key4": "data4"
},
"Y": {
"key5": "data5"
}
}
}"""
data = json.loads(data_str)
print("type(data):", type(data))
print("data.keys():", data.keys())
print("type(data['B']):", type(data.get('B', {})))
print("data['B']:", data.get('B', {}))
print("data['B'].keys():", data['B'].keys())
for k in data.get('B', {}).keys():
print(f"type(data['B']['{k}']):", type(data.get('B', {}).get(k, {})))
print(f"data['B']['{k}']:", data.get('B', {}).get(k, {}))
Выход:
type(data): <class 'dict'>
data.keys(): dict_keys(['A', 'B'])
type(data['B']): <class 'dict'>
data['B']: {'X': {'key4': 'data4'}, 'Y': {'key5': 'data5'}}
data['B'].keys(): dict_keys(['X', 'Y'])
type(data['B']['X']): <class 'dict'>
data['B']['X']: {'key4': 'data4'}
type(data['B']['Y']): <class 'dict'>
data['B']['Y']: {'key5': 'data5'}
data['B'].keys()…?