0

I have the Json content like this

{"expand": "names,schema","startAt": 0,"maxResults": 50,"total": 1,"issues": [{"expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields","id": "641955","self": "https://rb-tracker.bosch.com/tracker19/rest/api/latest/issue/641955","key": "EDATOOL-1411","fields": {"created": "2022-12-06T11:14:36.000+0100","customfield_10000": "{summaryBean=com.atlassian.jira.plugin.devstatus.rest.SummaryBean@24a1688f[summary={pullrequest=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@23f2f23c[overall=PullRequestOverallBean{stateCount=0, state='OPEN', details=PullRequestOverallDetails{openCount=0, mergedCount=0, declinedCount=0}},byInstanceType={}], build=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@321de5ab[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BuildOverallBean@6ca82c6[failedBuildCount=0,successfulBuildCount=0,unknownBuildCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], review=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@5fc3e1e6[overall=com.atlassian.jira.plugin.devstatus.summary.beans.ReviewsOverallBean@7a2d42e3[stateCount=0,state=<null>,dueDate=<null>,overDue=false,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], deployment-environment=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@2740d0b0[overall=com.atlassian.jira.plugin.devstatus.summary.beans.DeploymentOverallBean@75ceaa2c[topEnvironments=[],showProjects=false,successfulCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], repository=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@35c2a9a2[overall=com.atlassian.jira.plugin.devstatus.summary.beans.CommitOverallBean@2568cfa3[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], branch=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@40c4eee[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BranchOverallBean@4131b89[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}]},errors=[],configErrors=[]], devSummaryJson={\"cachedValue\":{\"errors\":[],\"configErrors\":[],\"summary\":{\"pullrequest\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":\"OPEN\",\"details\":{\"openCount\":0,\"mergedCount\":0,\"declinedCount\":0,\"total\":0},\"open\":true},\"byInstanceType\":{}},\"build\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"failedBuildCount\":0,\"successfulBuildCount\":0,\"unknownBuildCount\":0},\"byInstanceType\":{}},\"review\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":null,\"dueDate\":null,\"overDue\":false,\"completed\":false},\"byInstanceType\":{}},\"deployment-environment\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"topEnvironments\":[],\"showProjects\":false,\"successfulCount\":0},\"byInstanceType\":{}},\"repository\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}},\"branch\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}}}},\"isStale\":true}}"}}]}

So I want to use Regex to get the content inside devSummaryJson={} block

I have try with devSummaryJson={.* but it return a few extra characters

devSummaryJson={\"cachedValue\":{\"errors\":[],\"configErrors\":[],\"summary\":{\"pullrequest\":{\"overall\":{\"count\":1,\"lastUpdated\":\"2022-12-19T09:09:46.366+0100\",\"stateCount\":1,\"state\":\"MERGED\",\"details\":{\"openCount\":0,\"mergedCount\":1,\"declinedCount\":2,\"total\":3},\"open\":false},\"byInstanceType\":{\"stash\":{\"count\":1,\"name\":\"Bitbucket Server\"}}},\"build\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"failedBuildCount\":0,\"successfulBuildCount\":0,\"unknownBuildCount\":0},\"byInstanceType\":{}},\"review\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":null,\"dueDate\":null,\"overDue\":false,\"completed\":false},\"byInstanceType\":{}},\"deployment-environment\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"topEnvironments\":[],\"showProjects\":false,\"successfulCount\":0},\"byInstanceType\":{}},\"repository\":{\"overall\":{\"count\":1,\"lastUpdated\":\"2022-12-19T09:09:46.000+0100\"},\"byInstanceType\":{\"stash\":{\"count\":1,\"name\":\"Bitbucket Server\"}}},\"branch\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}}}},\"isStale\":false}}"}}]}.

So Is there any way to solve this problem? (Removing exactly three specific characters at the end is not preferred, due to in the future maybe have change the json format)

Many thanks.

  • 2
    Why not use a json parser on the json string. then json parse again on the property that holds the json string? – Buttered_Toast Dec 29 '22 at 08:32
  • Hi @Buttered_Toast, due to the string value inside `customfield_10000` so complex and i don't know how to deal with it to get the content inside `devSummaryJson` – Nguyễn Tri Mẫn Dec 29 '22 at 08:58

2 Answers2

1

Thanks for your support. I have find the solution as your suggestion.

First: parser the json to the string enter image description here Second: Use Regex to get the content devSummaryJson enter image description here I'll try with groovy and post in here for anyone need.

P/S: Add groovy code to get content by parser Json and Regex enter image description here

--> Result enter image description here

0

The simplest regex: "devSummaryJson={.*(?=}]})"gm

regex101.com

  • (?=}]}) is a positive lookahead. It searches everything before three specific characters }]}.
  • devSummaryJson={.* the position where the search starts.

Anyway, regex is not applicable for this type of problem and the best solution would be using a json parser.

Albina
  • 1,901
  • 3
  • 7
  • 19
  • 'regex' are the wrong tool for this problem. Use the json module of python to parse the json document. Hint `json.loads(data)' – jhilmer Dec 29 '22 at 08:52
  • Hi all, could you show me example how to parser that json with python code to get content inside `devSummaryJson`. – Nguyễn Tri Mẫn Dec 29 '22 at 09:02
  • @NguyễnTriMẫn please explore this answer please explore this answer https://stackoverflow.com/a/7771071/20666497. Or google a similar question. – Albina Dec 29 '22 at 09:25