Home > other >  Need specific values from a JSON string
Need specific values from a JSON string

Time:02-01

I require to pull out the assignee,name of the issuetype,priority and the worklog values from a string within python.

json = 
{"expand":"renderedFields,names,schema","id":"743145","self":"XXXXXXXXXXXX/api/2/issue/743145","key":"TEST1234-1266","fields":{"issuelinks":[],"assignee":{"self":"XXXXXXXXXXXX/api/2/user?username=XX.XX","name":"XX.XX","key":"JIRAUSER22031","emailAddress":"[email protected]","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/useravatar?avatarId=10122","24x24":"XXXXXXXXXXXXjira/secure/useravatar?size=small&avatarId=10122","16x16":"XXXXXXXXXXXXjira/secure/useravatar?size=xsmall&avatarId=10122","32x32":"XXXXXXXXXXXXjira/secure/useravatar?size=medium&avatarId=10122"},"displayName":"XX, XX","active":true,"timeZone":"Europe/London"},"components":[{"self":"XXXXXXXXXXXX/api/2/component/23015","id":"23015","name":"AWS_EC2","description":"AWS_EC2"}],"customfield_13320":null,"customfield_12110":null,"customfield_14410":null,"customfield_14411":null,"customfield_13321":null,"customfield_14412":null,"customfield_13326":null,"customfield_14413":"2022-01-31T09:59:45.185 0000","customfield_13325":null,"customfield_14407":null,"customfield_13317":null,"customfield_13316":null,"customfield_14408":null,"customfield_13319":null,"customfield_14405":[{"self":"XXXXXXXXXXXX/api/2/customFieldOption/18414","value":"Incident","id":"18414","disabled":false}],"customfield_10601":null,"customfield_13318":null,"customfield_14406":null,"customfield_14409":"2022-01-31T09:59:44.631 0000","customfield_10606":null,"customfield_10607":null,"subtasks":[],"customfield_14400":null,"customfield_13311":null,"reporter":{"self":"XXXXXXXXXXXX/api/2/user?username=XX.XX","name":"XX.XX","key":"JIRAUSER22031","emailAddress":"[email protected]","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/useravatar?avatarId=10122","24x24":"XXXXXXXXXXXXjira/secure/useravatar?size=small&avatarId=10122","16x16":"XXXXXXXXXXXXjira/secure/useravatar?size=xsmall&avatarId=10122","32x32":"XXXXXXXXXXXXjira/secure/useravatar?size=medium&avatarId=10122"},"displayName":"XX, XX","active":true,"timeZone":"Europe/London"},"customfield_13310":null,"customfield_13313":null,"customfield_14403":null,"customfield_13312":null,"customfield_14404":null,"customfield_13315":null,"customfield_14401":null,"customfield_13314":null,"customfield_14402":null,"customfield_13306":null,"customfield_13305":null,"customfield_13308":null,"customfield_13307":null,"customfield_13309":null,"progress":{"progress":3600,"total":3600,"percent":100},"votes":{"self":"XXXXXXXXXXXX/api/2/issue/TEST1234-1266/votes","votes":0,"hasVoted":false},"worklog":{"startAt":0,"maxResults":20,"total":1,"worklogs":[{"self":"XXXXXXXXXXXX/api/2/issue/743145/worklog/3834259","author":{"self":"XXXXXXXXXXXX/api/2/user?username=XX.XX","name":"XX.XX","key":"JIRAUSER22031","emailAddress":"[email protected]","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/useravatar?avatarId=10122","24x24":"XXXXXXXXXXXXjira/secure/useravatar?size=small&avatarId=10122","16x16":"XXXXXXXXXXXXjira/secure/useravatar?size=xsmall&avatarId=10122","32x32":"XXXXXXXXXXXXjira/secure/useravatar?size=medium&avatarId=10122"},"displayName":"XX, XX","active":true,"timeZone":"Europe/London"},"updateAuthor":{"self":"XXXXXXXXXXXX/api/2/user?username=XX.XX","name":"XX.XX","key":"JIRAUSER22031","emailAddress":"[email protected]","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/useravatar?avatarId=10122","24x24":"XXXXXXXXXXXXjira/secure/useravatar?size=small&avatarId=10122","16x16":"XXXXXXXXXXXXjira/secure/useravatar?size=xsmall&avatarId=10122","32x32":"XXXXXXXXXXXXjira/secure/useravatar?size=medium&avatarId=10122"},"displayName":"XX, XX","active":true,"timeZone":"Europe/London"},"comment":"This a test ","created":"2022-01-31T10:00:03.381 0000","updated":"2022-01-31T10:00:03.381 0000","started":"2022-01-31T09:58:00.000 0000","timeSpent":"1h","timeSpentSeconds":3600,"id":"3834259","issueId":"743145"}]},"issuetype":{"self":"XXXXXXXXXXXX/api/2/issuetype/10704","id":"10704","description":"A defect is a flaw (bug) in a component/system that can cause a component/system to fail to perform its required functionality","iconUrl":"XXXXXXXXXXXXjira/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype","name":"Defect","subtask":false,"avatarId":10303},"project":{"self":"XXXXXXXXXXXX/api/2/project/14702","id":"14702","key":"TEST1234","name":"UK-Central-Test-ADA","projectTypeKey":"software","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/projectavatar?avatarId=10324","24x24":"XXXXXXXXXXXXjira/secure/projectavatar?size=small&avatarId=10324","16x16":"XXXXXXXXXXXXjira/secure/projectavatar?size=xsmall&avatarId=10324","32x32":"XXXXXXXXXXXXjira/secure/projectavatar?size=medium&avatarId=10324"},"projectCategory":{"self":"XXXXXXXXXXXX/api/2/projectCategory/10300","id":"10300","description":"","name":"AD-Agile"}},"customfield_11000":null,"customfield_13300":null,"customfield_13302":null,"customfield_13301":null,"customfield_13304":null,"customfield_13303":null,"resolutiondate":null,"watches":{"self":"XXXXXXXXXXXX/api/2/issue/TEST1234-1266/watchers","watchCount":0,"isWatching":false},"customfield_12200":null,"customfield_14502":null,"customfield_11113":null,"customfield_13405":null,"customfield_13404":null,"customfield_13407":null,"customfield_11900":null,"customfield_13406":null,"customfield_13408":null,"updated":"2022-01-31T10:00:03.383 0000","timeoriginalestimate":null,"description":"MTD-46398","customfield_10010":null,"customfield_12310":null,"customfield_11220":null,"customfield_11100":null,"customfield_10011":null,"customfield_11221":null,"customfield_10012":{"self":"XXXXXXXXXXXX/tempo-accounts/1/account/303","id":"303","key":"UKCENTRALT","name":"UK Central Test"},"customfield_11222":null,"customfield_11101":null,"customfield_13401":null,"customfield_13403":null,"timetracking":{"timeSpent":"1h","timeSpentSeconds":3600},"customfield_13402":null,"customfield_12426":null,"customfield_10006":null,"customfield_12425":null,"customfield_12428":null,"customfield_11218":null,"customfield_12427":null,"customfield_10009":"0|i3gaem:","customfield_11219":null,"customfield_12309":null,"customfield_12308":null,"summary":"Testing of EC2 instance","customfield_10000":null,"customfield_13511":null,"customfield_10001":null,"customfield_13510":null,"customfield_10002":5,"customfield_12424":null,"customfield_10004":null,"customfield_13512":null,"customfield_12415":null,"customfield_11204":null,"customfield_11205":null,"customfield_13506":null,"environment":null,"customfield_11206":null,"customfield_11207":null,"customfield_11208":null,"customfield_11209":null,"duedate":null,"customfield_13509":null,"comment":{"comments":[{"self":"XXXXXXXXXXXX/api/2/issue/743145/comment/698580","id":"698580","author":{"self":"XXXXXXXXXXXX/api/2/user?username=XX.XX","name":"XX.XX","key":"JIRAUSER22031","emailAddress":"[email protected]","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/useravatar?avatarId=10122","24x24":"XXXXXXXXXXXXjira/secure/useravatar?size=small&avatarId=10122","16x16":"XXXXXXXXXXXXjira/secure/useravatar?size=xsmall&avatarId=10122","32x32":"XXXXXXXXXXXXjira/secure/useravatar?size=medium&avatarId=10122"},"displayName":"XX, XX","active":true,"timeZone":"Europe/London"},"body":"test","updateAuthor":{"self":"XXXXXXXXXXXX/api/2/user?username=XX.XX","name":"XX.XX","key":"JIRAUSER22031","emailAddress":"[email protected]","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/useravatar?avatarId=10122","24x24":"XXXXXXXXXXXXjira/secure/useravatar?size=small&avatarId=10122","16x16":"XXXXXXXXXXXXjira/secure/useravatar?size=xsmall&avatarId=10122","32x32":"XXXXXXXXXXXXjira/secure/useravatar?size=medium&avatarId=10122"},"displayName":"XX, XX","active":true,"timeZone":"Europe/London"},"created":"2022-01-31T09:59:44.624 0000","updated":"2022-01-31T09:59:44.624 0000"}],"maxResults":1,"total":1,"startAt":0},"fixVersions":[],"customfield_13500":null,"customfield_11200":null,"customfield_12411":null,"customfield_12410":null,"customfield_13502":null,"customfield_12413":null,"customfield_12412":null,"customfield_12404":null,"customfield_12403":null,"customfield_12407":null,"customfield_12409":null,"customfield_12400":null,"priority":{"self":"XXXXXXXXXXXX/api/2/priority/3","iconUrl":"XXXXXXXXXXXXjira/images/icons/priorities/medium.svg","name":"Medium","id":"3"},"customfield_10100":null,"customfield_10101":[],"customfield_12402":null,"customfield_12401":{"self":"XXXXXXXXXXXX/api/2/customFieldOption/12432","value":"Standard","id":"12432","disabled":false},"customfield_11304":null,"timeestimate":null,"customfield_12638":null,"versions":[],"status":{"self":"XXXXXXXXXXXX/api/2/status/10001","description":"The issue has to be reviewed by another member of the team.","iconUrl":"XXXXXXXXXXXXjira/","name":"In Review","id":"10001","statusCategory":{"self":"XXXXXXXXXXXX/api/2/statuscategory/4","id":4,"key":"indeterminate","colorName":"yellow","name":"In Progress"}},"customfield_15102":null,"customfield_10210":null,"customfield_12631":null,"customfield_12630":null,"customfield_13601":null,"customfield_12633":null,"customfield_13600":"In Progress","customfield_12632":null,"customfield_11302":null,"customfield_12626":null,"customfield_12625":null,"customfield_14802":null,"customfield_10206":null,"customfield_10207":null,"customfield_12628":null,"aggregatetimeestimate":null,"customfield_12627":null,"customfield_10208":{"self":"XXXXXXXXXXXX/api/2/customFieldOption/10117","value":"Medium","id":"10117","disabled":false},"customfield_10209":null,"customfield_12629":null,"creator":{"self":"XXXXXXXXXXXX/api/2/user?username=XX.XX","name":"XX.XX","key":"JIRAUSER22031","emailAddress":"[email protected]","avatarUrls":{"48x48":"XXXXXXXXXXXXjira/secure/useravatar?avatarId=10122","24x24":"XXXXXXXXXXXXjira/secure/useravatar?size=small&avatarId=10122","16x16":"XXXXXXXXXXXXjira/secure/useravatar?size=xsmall&avatarId=10122","32x32":"XXXXXXXXXXXXjira/secure/useravatar?size=medium&avatarId=10122"},"displayName":"XX, XX","active":true,"timeZone":"Europe/London"},"aggregateprogress":{"progress":3600,"total":3600,"percent":100},"customfield_10200":null,"customfield_10202":null,"customfield_12614":null,"timespent":3600,"customfield_15200":null,"aggregatetimespent":3600,"customfield_11401":null,"customfield_11400":null,"customfield_14900":null,"customfield_14901":null,"customfield_10307":null,"workratio":-1,"created":"2022-01-28T15:39:26.945 0000","customfield_14100":null,"customfield_13801":null,"customfield_11501":null,"customfield_13803":null,"customfield_13805":null,"customfield_13804":null,"customfield_13807":null,"customfield_13806":null,"customfield_11500":null,"customfield_10402":null,"customfield_12029":null,"customfield_11614":null,"customfield_13912":0,"customfield_11613":null,"customfield_11616":null,"attachment":[],"customfield_11615":null,"customfield_11618":null,"customfield_11617":null,"customfield_11619":null,"customfield_12023":null,"customfield_13900":"Pre-Analysis","customfield_11601":null,"customfield_12019":null,"customfield_11600":null,"customfield_11603":null,"customfield_13901":null,"customfield_11602":null,"customfield_13904":"<p>test</p>","customfield_13903":"Not Started","customfield_11604":null,"customfield_13906":null,"customfield_13905":"Unassigned"}}

Part of my code is as follows:

import requests
from requests.structures import CaseInsensitiveDict


url = "https://xxxx.com/xxxxxx/rest/api/2/search?xxxx=project=UKTEST"


r = requests.get(url, auth=(username, password))
packages_json = r.json ()
packages_str = json.dumps(packages_json)

print(packages_str)

What I would like is to put these into another json file:

'{
  "fields": {
    "self": {
      "key": "TEST"
    },
    "assignee": "X.XX",
    "summary": "Test Summary",
    "priority": "Medium",
    "worklog": [
    {
      "worklogs": 
        "started": "2022-01-31T09:58:00.000 0000",
        "name": "XX.XX",
        "timeSpentSeconds: 3600
      ]  
    }
       
    "issuetype": {
      "name": "Story"
    }
  }
}

Can you please help?

CodePudding user response:

This one-liner could be what you are looking for

{ key: json[key] for key in ['assignee', 'name', 'priority']}

CodePudding user response:

Your code is good except that you are converting it to string using json.dumps which is not required

import requests

url = "https://xxxx.com/xxxxxx/rest/api/2/search?xxxx=project=UKTEST"


r = requests.get(url, auth=(username, password))
packages_json = r.json ()

json() method return a python dictionary

You can get your required value using packages_json['assignee'] or packages_json.get('assignee') dictionary methods

CodePudding user response:

Assuming that r.json() contains the JSON in the same format as your example, then the following approach should work:

data = r.json()

output = {
    "fields": {
        "self": {
            "key": data['key']
        },
        "assignee": data['fields']['assignee']['name'],
        "summary": data['fields']['summary'],
        "priority": data['fields']['priority']['name'],
        "worklog": {
            "worklogs": [
            ],
        },
       
        "issuetype": {
            "name": data['fields']['issuetype']['name']
        }
    }
}
    
worklogs = output['fields']['worklog']['worklogs']

for worklog in data['fields']['worklog']['worklogs']:
    worklogs.append({
        "started": worklog['started'],
        "name": worklog['author']['name'],
        "timeSpentSeconds": worklog['timeSpentSeconds'],
    })
    
with open('data.json', 'w') as f_json:
    json.dump(output, f_json)
  •  Tags:  
  • Related