Python Json访问

2024-05-29 03:02:33 发布

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

我有如下Json数据:

{
 "context":[ 
            {   
             "local": 
                    [
                      {
                       "interface": "BDI200",
                       "desc":"eNODEB",
                      },

                       {
                      "interface": "BDI100",
                      "desc":"eNODEB",
                      }
                   ]

                 },

            {
               "CPM": [
                       {

                       "interface": "BDI200",
                       "desc":"eNODEB",
                       },

                      {
                       "interface": "BDI100",
                       "desc":"eNODEB",
                       }
                 ]
         }
   ]
}

实际上在“context”中,我有两个context“local”和“CPM”。要访问上下文的元素,我必须静态地指定上下文的名称(例如下面的代码)。在现实生活中,我有50多个上下文,那么我如何访问不提供姓名

import json


a=open('4.txt','r')
data=json.load(a)
print (data['context'][0]['local'])

Tags: 数据名称json元素datalocalcontext静态
2条回答

在您的案例中,上下文是一个数组,因此您可以简单地对其进行迭代:

for cntxt in data["context"]:
    print(cntxt)

如果您对json结构拥有控制权,则可以通过以下方式进行更改:

{
    "context":
    {   
        "local": [
            {
                "interface": "BDI200",
                "desc":"eNODEB",
            },
            {
                "interface": "BDI100",
                "desc":"eNODEB",
            }
        ],

        "CPM": [
            {
                "interface": "BDI200",
                "desc":"eNODEB",
            },
            {
                "interface": "BDI100",
                "desc":"eNODEB",
            }
        ]
    }
}

更明确地重复:

for name, context_data in a["context"].items():
    print("Context's name:", name)
    print("Data:", context_data)

首先,你的json是无效的

我用下面讨论的那个做了一个有效的json

{
 "context":[ 
            {   
             "local": 
                    [
                      {
                       "interface": "BDI200",
                       "desc":"eNODEB"
                      },

                       {
                        "interface": "BDI100",
                        "desc":"eNODEB"
                      }
                   ]

                 },

            {
               "CPM": [
                       {

                       "interface": "BDI200",
                       "desc":"eNODEB"
                       },

                      {
                       "interface": "BDI100",
                       "desc":"eNODEB"
                       }
                 ]
         }
   ]
}

如果你想迭代这个json,得到所有的local,CPM等等,试试这个

import json


a=open('4.txt','r')
data=json.load(a)
for k in data:
    for j in data[k]:
        d = j
        for l in d:
            print(l)
            print(d[l])

相关问题 更多 >

    热门问题