У меня есть файл JSON, его формат: массив объектов. Каждый объект представляет один класс. Каждый объект JSON имеет ключ «method», представляющий все методы анализируемого класса. Формат прост, как мы видим в следующем примере
Это не полный файл JSON, это блок для одного класса
[
{
"methods": [
{
"parametersTypes": [
"String"
],
"metricsValues": {
"ParameterCount": 1.0,
"CyclomaticComplexity": 1.0,
"LocalityRatio": 1.0,
"MethodLinesOfCode": 2.0,
"MaxCallChain": 1.0
},
"fullyQualifiedName": "Smiley.Smiley",
"smells": []
},
{
"parametersTypes": [
"String"
],
"metricsValues": {
"ParameterCount": 1.0,
"CyclomaticComplexity": 8.0,
"LocalityRatio": null,
"MethodLinesOfCode": 23.0,
"MaxCallChain": 0.0
},
"fullyQualifiedName": "Smiley.checkSmiley",
"smells": [
{
"name": "LazyClass",
"reason": null,
"startingLine": 3,
"endingLine": 36
}
]
}
],
"metricsValues": {
"PublicFieldCount": 0.0,
"TightClassCohesion": 0.0,
"IsAbstract": 0.0,
"ClassLinesOfCode": 27.0,
"OverrideRatio": 0.037037037037037035
},
"fullyQualifiedName": "Smiley",
"smells": [
{
"name": "LazyClass",
"reason": null,
"startingLine": 10,
"endingLine": 70
}
]
}
]
Мне нужно собрать все запахи в файле JSON, и я положу их в DataFrame
Я пробую это для одного класса
Это мой код
import json
from pprint import pprint
with open('Testan.json') as f:
data = json.load(f)
pprint(data)
for datum in data[0]["methods"]:
print(datum['smells'])
И это результат:
[]
[{'name': 'LazyClass', 'reason': 'null', 'startingLine': 3, 'endingLine': 36}]
[{'name': 'LazyClass', 'reason': 'null', 'startingLine': 10, 'endingLine': 70}]
Сначала мне нужно из этого списка только имена (LazyClass), а затем мне нужно собрать данные из всех классов JSON File, а не из первого класса.
Любая помощь, пожалуйста, и заранее спасибо!