如何访问.json数据?

2024-09-29 19:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

有谁能帮我从下面的json中获取数据吗?我有下面格式的json数据

[
  {
    "methods": [
      {
        "parametersTypes": [
          "int",
          "Menu"
        ],
        "sourceFile": {
          "file": {
            "path": "/mnt/c/anyplace-master/android/actionbarsherlock/src/android/support/v4/app/Watson.java"
      }
    },
    "metricsValues": {
      "MethodLinesOfCode": 33.0,
      "CyclomaticComplexity": 13.0,
      "CouplingDispersion": 0.6666666666666666,
      "MaxNesting": 5.0,
      "ChangingClasses": 0.0,
      "ParameterCount": 2.0,
      "CouplingIntensity": 3.0,
      "NumberOfAccessedVariables": 13.0,
      "MaxCallChain": 1.0,
      "ChangingMethods": 0.0
    },
    "fullyQualifiedName": "android.support.v4.app.Watson.onCreatePanelMenu",
    "smells": [
      {
        "name": "LongMethod",
        "reason": "MLOC > 6.74646840148693",
        "startingLine": 39,
        "endingLine": 82
      }
    ]

我只需要键“name”的值,也就是“longMethod”

"name": "LongMethod"

注意:这个块是我的JSON文件的一部分,它会重复

提前谢谢!你知道吗


Tags: 数据namejsonappsupport格式watsonandroid
3条回答

您可以使用json打开文件:

import json
with open('your_file.json') as f:
    data = json.load(f)

并通过以下方式访问变量:

data[0]['methods']['smells'][0]['name']

假设我对不完整json的猜测是正确的,这就是你要做的

s="""[
    {
        "methods": 
        [
            {
                "parametersTypes":
                [
                    "int",
                    "Menu"
                ],
                "sourceFile": 
                {
                    "file": 
                    {
                        "path": "/mnt/c/anyplace-master/android/actionbarsherlock/src/android/support/v4/app/Watson.java"
                    }
                },
                "metricsValues": 
                {
                  "MethodLinesOfCode": 33.0,
                  "CyclomaticComplexity": 13.0,
                  "CouplingDispersion": 0.6666666666666666,
                  "MaxNesting": 5.0,
                  "ChangingClasses": 0.0,
                  "ParameterCount": 2.0,
                  "CouplingIntensity": 3.0,
                  "NumberOfAccessedVariables": 13.0,
                  "MaxCallChain": 1.0,
                  "ChangingMethods": 0.0
                },
                "fullyQualifiedName": "android.support.v4.app.Watson.onCreatePanelMenu",
                "smells": 
                [
                    {
                        "name": "LongMethod",
                        "reason": "MLOC > 6.74646840148693",
                        "startingLine": 39,
                        "endingLine": 82
                    }
                ]
            }
        ]
    }
]"""

import json
d=json.loads(s)
print(d[0]["methods"][0]["smells"][0]["name"])

这应该管用

data = [
  {
    "methods": [
      {
        "parametersTypes": [
          "int",
          "Menu"
        ],
        "sourceFile": {
          "file": {
            "path": "/mnt/c/anyplace-master/android/actionbarsherlock/src/android/support/v4/app/Watson.java"
      }
    },
    "metricsValues": {
      "MethodLinesOfCode": 33.0,
      "CyclomaticComplexity": 13.0,
      "CouplingDispersion": 0.6666666666666666,
      "MaxNesting": 5.0,
      "ChangingClasses": 0.0,
      "ParameterCount": 2.0,
      "CouplingIntensity": 3.0,
      "NumberOfAccessedVariables": 13.0,
      "MaxCallChain": 1.0,
      "ChangingMethods": 0.0
    },
    "fullyQualifiedName": "android.support.v4.app.Watson.onCreatePanelMenu",
    "smells": [
      {
        "name": "LongMethod",
        "reason": "MLOC > 6.74646840148693",
        "startingLine": 39,
        "endingLine": 82
      }
    ]
          }
          ]
  }
]

print(data[0]['methods'][0]['smells'][0]['name'])

您可能需要使用索引方法使其动态化。您可以使用python的type方法来检查数据的子序列类型,例如type(data), type(data[0]), type(data[0]['methods']),这将帮助您更好地理解它。你知道吗

相关问题 更多 >

    热门问题