首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >遍历Json数据以获取URL

遍历Json数据以获取URL
EN

Stack Overflow用户
提问于 2018-07-04 07:01:25
回答 1查看 139关注 0票数 0

我正在尝试解析以下JSON数据,并使用python获取URL值。下面的JSON示例中,我希望从JSON标签下获取Function.From并将其存储在两个数组中。1个数组将存储有颜色标签的URL,其他数组将存储没有颜色标签的URL。一旦两个数组准备好了,我想返回这两个数组。我是python的新手,需要一些帮助。

    {  
        "_class":"com.cloudbees.hudson.plugins.folder.Folder",
        "actions":[  ],
        "description":"This is a TSG level folder.",
        "displayName":"CONSOLIDATED",
        "displayNameOrNull":null,
        "fullDisplayName":"CONSOLIDATED",
        "fullName":"CONSOLIDATED",
        "name":"CONSOLIDATED",
        "url":"https://cyggm.com/job/CONSOLIDATED/",
        "healthReport":[  
         {  
             "description":"Projects enabled for building: 187 of 549",
             "iconClassName":"icon-health-20to39",
             "iconUrl":"health-20to39.png",
             "score":34
         }
         ],
         "jobs":[  
             {  
                 "_class":"com.cloudbees.hudson.plugins.folder.Folder",
                  "name":"yyfyiff",
                  "url":"https://tdyt.com/job/ 
                   CONSOLIDATED/job/yfiyf/"
             },
            {  
               "_class":"com.cloudbees.hudson.plugins.folder.Folder",
               "name":"Ops-Prod-Jobs",
               "url":"https://ygduey.com/job/ 
                CONSOLIDATED/job/Ops-Prod-Jobs/"
             },
            {  
                "_class":"com.cloudbees.hudson.plugins.folder.Folder",
                "name":"TEST-DATA-MGMT",
                "url":"https://futfu.com/job/ 
               CONSOLIDATED/job/TEST-DATA-MGMT/"
            },
            {  
                "_class":"com.cloudbees.hudson.plugins.folder.Folder",
                "name":"TESTING-OPS",
                  "url":"https://gfutfu.com/job/ 
               CONSOLIDATED/job/TESTING-OPS/"
             },
             {  
                  "_class":"com.cloudbees.hudson.plugins.folder.Folder",
                  "name":"Performance_Engineering Team",
                 "url":"https://ytdyt.com/job/ 
                  CONSOLIDATED/job/Performance_Engineering%20Team/"
            },
              {  
                    "_class":"hudson.model.FreeStyleProject",
                     "name":"test",
                     "url":"https://tduta.com/job/ 
                      CONSOLIDATED/job/test/",
                     "color":"notbuilt"
            }
            ],
              "primaryView":{  
                  "_class":"hudson.model.AllView",
                 "name":"all",
                   "url":"https://fuyfi.com/job/ 
            CONSOLIDATED/"
              },
             "views":[  
             {  
                    "_class":"hudson.model.AllView",
                     "name":"all",
                    "url":"https://utfufu.com/job/
                   CONSOLIDATED/"
              }
              ]
            }

下面是我用来获取作业数据的python代码,但是我无法遍历作业数据来获取所有URL。如果我更改代码,我一次只能得到1个

    req = requests.get(url, verify=False, auth=(username, password))
    j = json.loads(req.text)
    jobs = j['jobs']
    print(jobs[1]['url'])

我在这里获得了第二个URL,但无法检查此条目是否有颜色标签

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 07:14:42

首先,您的JSON的格式不正确。您必须使用JSON formatter来检查其有效性并修复任何问题。

也就是说,您必须以字符串的形式读取文件

In [87]: with open('data.json', 'r') as f:
    ...:     data = f.read()
    ...:

然后使用json库将数据加载到dict

In [88]: d = json.loads(data)

然后,您可以使用2个列表理解来获取所需的数据

In [90]: no_color = [record['url'] for record in d['jobs'] if 'color' not in record]

In [91]: color = [record['url'] for record in d['jobs'] if 'color' in record]

In [93]: no_color
Out[93]:
['https://tdyt.com/job/CONSOLIDATED/job/yfiyf/',
 'https://ygduey.com/job/CONSOLIDATED/job/Ops-Prod-Jobs/',
 'https://futfu.com/job/CONSOLIDATED/job/TEST-DATA-MGMT/',
 'https://gfutfu.com/job/CONSOLIDATED/job/TESTING-OPS/',
 'https://ytdyt.com/job/CONSOLIDATED/job/Performance_Engineering%20Team/']

In [94]: color
Out[94]: ['https://tduta.com/job/CONSOLIDATED/job/test/']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51163822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档