Groovy - parse json: how to find certain “block” in json response with the goal of further parsing it
Pre-condition:
I'm testing REST in SoapUI tool.
I'm sending request, and in result
I have json response, which I want to parse with help of groovy code:
{"List": [
{
"id": 1,
"data1": "xxx",
"data2": {
"node1": "1",
"node2": "4",
"node3": 1,
}
},
{
"id": 2,
"data1": "yyy",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
},
{
"id": 3,
"data1": "zzz",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
}
]}
Goal: I want to find certain block (e.g. that with "id" = 2), and continue to parse this block with the goal of further assertions.
E.g., I want to verify, that directly in the "block" with "id"=2, those node1/node2/node 3 are {2, 6, 2} correspondingly.
So, how to do it with groovy(in soapUI script step) ?
json groovy soapui
add a comment |
Pre-condition:
I'm testing REST in SoapUI tool.
I'm sending request, and in result
I have json response, which I want to parse with help of groovy code:
{"List": [
{
"id": 1,
"data1": "xxx",
"data2": {
"node1": "1",
"node2": "4",
"node3": 1,
}
},
{
"id": 2,
"data1": "yyy",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
},
{
"id": 3,
"data1": "zzz",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
}
]}
Goal: I want to find certain block (e.g. that with "id" = 2), and continue to parse this block with the goal of further assertions.
E.g., I want to verify, that directly in the "block" with "id"=2, those node1/node2/node 3 are {2, 6, 2} correspondingly.
So, how to do it with groovy(in soapUI script step) ?
json groovy soapui
JsonSlurper can parse jsonstring to maps/arrays. After that it's just an iteration/find of elements...
– daggett
Nov 20 '18 at 21:56
Hi! sure, slurper seems to be suitable, but I stucked with finding Instance with certain id. Yes, we can find that "id = 2", but how to save that part of map, and only it?
– Dmitry
Nov 21 '18 at 8:25
add a comment |
Pre-condition:
I'm testing REST in SoapUI tool.
I'm sending request, and in result
I have json response, which I want to parse with help of groovy code:
{"List": [
{
"id": 1,
"data1": "xxx",
"data2": {
"node1": "1",
"node2": "4",
"node3": 1,
}
},
{
"id": 2,
"data1": "yyy",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
},
{
"id": 3,
"data1": "zzz",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
}
]}
Goal: I want to find certain block (e.g. that with "id" = 2), and continue to parse this block with the goal of further assertions.
E.g., I want to verify, that directly in the "block" with "id"=2, those node1/node2/node 3 are {2, 6, 2} correspondingly.
So, how to do it with groovy(in soapUI script step) ?
json groovy soapui
Pre-condition:
I'm testing REST in SoapUI tool.
I'm sending request, and in result
I have json response, which I want to parse with help of groovy code:
{"List": [
{
"id": 1,
"data1": "xxx",
"data2": {
"node1": "1",
"node2": "4",
"node3": 1,
}
},
{
"id": 2,
"data1": "yyy",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
},
{
"id": 3,
"data1": "zzz",
"data2": {
"node1": "2",
"node2": "6",
"node3": 2,
}
}
]}
Goal: I want to find certain block (e.g. that with "id" = 2), and continue to parse this block with the goal of further assertions.
E.g., I want to verify, that directly in the "block" with "id"=2, those node1/node2/node 3 are {2, 6, 2} correspondingly.
So, how to do it with groovy(in soapUI script step) ?
json groovy soapui
json groovy soapui
asked Nov 20 '18 at 18:51
DmitryDmitry
197318
197318
JsonSlurper can parse jsonstring to maps/arrays. After that it's just an iteration/find of elements...
– daggett
Nov 20 '18 at 21:56
Hi! sure, slurper seems to be suitable, but I stucked with finding Instance with certain id. Yes, we can find that "id = 2", but how to save that part of map, and only it?
– Dmitry
Nov 21 '18 at 8:25
add a comment |
JsonSlurper can parse jsonstring to maps/arrays. After that it's just an iteration/find of elements...
– daggett
Nov 20 '18 at 21:56
Hi! sure, slurper seems to be suitable, but I stucked with finding Instance with certain id. Yes, we can find that "id = 2", but how to save that part of map, and only it?
– Dmitry
Nov 21 '18 at 8:25
JsonSlurper can parse jsonstring to maps/arrays. After that it's just an iteration/find of elements...
– daggett
Nov 20 '18 at 21:56
JsonSlurper can parse jsonstring to maps/arrays. After that it's just an iteration/find of elements...
– daggett
Nov 20 '18 at 21:56
Hi! sure, slurper seems to be suitable, but I stucked with finding Instance with certain id. Yes, we can find that "id = 2", but how to save that part of map, and only it?
– Dmitry
Nov 21 '18 at 8:25
Hi! sure, slurper seems to be suitable, but I stucked with finding Instance with certain id. Yes, we can find that "id = 2", but how to save that part of map, and only it?
– Dmitry
Nov 21 '18 at 8:25
add a comment |
1 Answer
1
active
oldest
votes
import groovy.json.JsonSlurper
def data = new JsonSlurper().parse ...
def e = data.List.find{it.id==1}
assert e.data1=="xxx"
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53399644%2fgroovy-parse-json-how-to-find-certain-block-in-json-response-with-the-goal%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
import groovy.json.JsonSlurper
def data = new JsonSlurper().parse ...
def e = data.List.find{it.id==1}
assert e.data1=="xxx"
add a comment |
import groovy.json.JsonSlurper
def data = new JsonSlurper().parse ...
def e = data.List.find{it.id==1}
assert e.data1=="xxx"
add a comment |
import groovy.json.JsonSlurper
def data = new JsonSlurper().parse ...
def e = data.List.find{it.id==1}
assert e.data1=="xxx"
import groovy.json.JsonSlurper
def data = new JsonSlurper().parse ...
def e = data.List.find{it.id==1}
assert e.data1=="xxx"
answered Nov 21 '18 at 8:35
daggettdaggett
8,86021530
8,86021530
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53399644%2fgroovy-parse-json-how-to-find-certain-block-in-json-response-with-the-goal%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
JsonSlurper can parse jsonstring to maps/arrays. After that it's just an iteration/find of elements...
– daggett
Nov 20 '18 at 21:56
Hi! sure, slurper seems to be suitable, but I stucked with finding Instance with certain id. Yes, we can find that "id = 2", but how to save that part of map, and only it?
– Dmitry
Nov 21 '18 at 8:25