And I want to use the data file in my POST body each iteration (I know, I only have one object so it’ll iterate once which is fine for now)
So the raw JSON data that will be posted to the endpoint will be:
“{{address.addressLine1}}” is literally sent to the server instead of the revelent value in the JSON data file, I’m expecting it to be “123 Fake Street”
Any idea if this functionality has been added in the last few years? From the things I’m trying, it appears that nested JSON in external files still doesn’t work - but I might be missing something.
Do you know of any way to bring nested JSON in from an external file maybe as one big string and then parse it in a pre-req script?
in your input JSON file, add a parent object that contains all of your nested JSON
create a local variable from the nested JSON in the data file in the pre-request: var inputJSONdata = pm.iterationData.get(“parentObject”);
create a stringified environmental variable: pm.environment.set(“envInputJSONdata”,JSON.stringify(inputJSONdata));
now you can work with the nested elements of that - for instance, you can populate the request body with the entire variable by putting {{envInputJSONdata}} in the Body
Hi, I have the exact same requirement. I am not able to follow your steps. Can you help me how to read the nested json from file . This is how actual JSON looks like in request.
Highlighted in bold is the section that I need to read from the JSON file.
Hi @danny-dainton, Yes I know I was surprised it’s still open
One scenario I would like to use with is data driven tests where you need more than an a one to one mapping.
E.g. you have an object, and in some iterations you want to add only one item to the array, but in other iterations you may want to add say 3 items for example.
So, if you could add an array of objects into the request that would be really helpful.
Currently, we are creating workarounds using a csv file using some sort of other delimiter like a pipe in a field and processing it in the pre-request to generate the dynamic playload.
But it’s not ideal, as it not easy for less experienced people on the team to work with.
I’ll let someone from Postman give you the specific answer, but I can’t see how this would work efficiently.
To parse Nested\Complex JSON properly, you would need a lot of code to take into consideration all of the possible combinations. Arrays within arrays, stringified objects, etc.
At the moment, each iteration is a single object in your JSON, or a single line in the CSV file. This makes it easy to write code to target those elements.
I’m not saying that the feature couldn’t be developed, but I can see it being fairly complicated.
At it stands, you can have complex JSON, but you will need to parse it yourself in a pre-request script where you can set variables for the current request, or you could replace some or all of the body using “pm.request.body.raw”.
I guess if you really want this feature, the first step is to raise it on the Postman Github.
@michaelderekjones thank you so much for that – that’s a perfect answer. In general, we like to use GitHub for feature requests so that we can more easily track, triage, and prioritize them.
We have begun exploring using JSON filtering (as an example: JMESPath, which is a bit like jq or JSONPath. We’d thought of this primarily to navigate response bodies, but perhaps this functionality could be useful in other areas of the product.
If you open that issue, we’ll reply and we’d love to further understand the use case and how we can assist.