cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
teqs
Kudo Commander
Kudo Commander

Parse dynamic JSON for every array-element and every key/value pair

Hello,

 

I need to build something similar to the existing "Create HTML table"-connector by myself in flow (and as flow).

 

For this, at start of the connector, the input is a text which has a JSON inside. Because the JSON can have 1 to x array-elements and the inside of the JSON structure can be of every type, I can not give a JSON schema. The Flow should handle every JSON-array it will get, same as the existing "Create HTML table"-connector is doing already.

 

I am struggling at parsing the JSON.

I simply want to do a action (write some HTML) for every key-value pair in the JSON, and for every object (array-element).

 

So I have to build something like:

 

// outside loop, iterate overy every json array-element in the JSON
for_every_array_element_in_a_JSON i { // inside of the loop, iterate overy every json key/value pair of one json array-element for_every_key_value_pair_in_a_array_element(i)
{
// do something with the key, e.g. write it to a HTML string
// do something with the key, e.g. write it to a HTML string
} }

 

I know flow has no real for-loop. I think i have to work with to "Apply to each"-loops in flow.

But I do not understand how I can iterate over all array-elements/objects in the outer loop and to iterate over all key/value pairs of every json-data-object in the inner loop.

 

Someone have a few tips?

 

 

 

If your need a example JSON, here is one.  But please be aware that I do not need a solution which is working only with this one. I just need to find solution to iterate over the array-elements in the outer loop and then iterate over every key/value pair in the inner loop. Regardles of the specific JSON schema in detail.

Following example has a JSON with 2 array-elements and 5 key/value pairs per each array-elements.

 

[
{
"ID": "\"3\"",
"ItemInternalId": "14",
"Name": "14", "ID": 14, "Editor": { "@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser", "Department": null, "JobTitle": null } }, { "ID": "\"6\"", "ItemInternalId": "15", "Name": 15, "Editor": { "@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser", "Department": null, "JobTitle": null } } ]

 

Two more Examples

[
{
"ID": "\"3\"",
"day1": "14",
"week2": "14",
"user": {
  "name": "jens",
  "Department": "development"
  }
},
{
"ID": "\"6\"",
"day1": 15,
"week2": 15,
"user": {
  "name": "mike",
  "Department": "testing"
  }
}
]
[
{
"usecase": "3",
"day1": "14",
"week2": "14",
"month": "12",
"years": "2019"
} , {
"usecase": "4",
"day1": "15",
"week2": "14",
"month": "12",
"years": "2019"
} , { 
"usecase": "9",
"day1": "15",
"week2": "76",
"month": "12",
"years": "2019"
} , {
"usecase": "5",
"day1": "15",
"week2": "14",
"month": "45",
"years": "2020"
} ]

Best regards and thanks a lot!

1 ACCEPTED SOLUTION

Accepted Solutions
teqs
Kudo Commander
Kudo Commander

Im found a solution.

 

It is descibed here to parse JSON and transform it to XML and then search keys with XPATH in Flow:

http://johnliu.net/blog/2017/11/foreach-property-in-microsoftflow-json-with-xpath-microblog

 

Here is another idea with credits to the one above:
https://powerusers.microsoft.com/t5/General-Flow-Discussion/Getting-JSON-keys-in-flow/td-p/99743

 

And here is another solution with doing the JSON to XML transformation:
https://powerusers.microsoft.com/t5/General-Flow-Discussion/convert-json-output-into-xml/td-p/160893

 

 

 

 

 

View solution in original post

9 REPLIES 9
abm
Most Valuable Professional
Most Valuable Professional

Hi @teqs 

 

In your example JSON I am struggling to understand what's the outerloop and innerloop. 

 

Did you tried your JSON Data to Parse JSON flow step. Then in next step it will construct a foreach loop automatically so that under the dynamic properties you can retrieve the Key/Values.

 



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blog
Power Automate Video Tutorials
teqs
Kudo Commander
Kudo Commander

Hi @abm 

 

If you understand the main goal, then it is just fine. Perhaps outer and inner loop are not needed, if someone knows a better idea.

The JSON has different array-elements and every array-element has some key value pairs. Because of this I was thinking of two loops to iterate over both. (I edited the main post a bit to make it more clear)

 

See the example JSON and be aware that the solution has to deal with every JSON structure, same as "create HTML flow". As I said already.

 

I had a look at "Parse JSON" alread ybut I see no solution for this because I have to enter a JSON schema there. Perhaps I miss something and I can enter the JSON schema dymamiclly and iterate over array-elements and key/value perhaps with it. But for now, I did not get it managed. Or I miss something in your idea.

 

abm
Most Valuable Professional
Most Valuable Professional

Hi @teqs 

 

That's more clear now and thanks for editing the original post.

 

For Parse JSON it expects a fixed schema so you won't be able to use it as dynamically.

 

If you know all possible JSON structure then try to construct as one schema and try it. I am not sure this will work but worth a try.



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blog
Power Automate Video Tutorials
teqs
Kudo Commander
Kudo Commander

Hi @abm 

Thanky for your trying to help, but I can't give "all possible JSON structure", because they are dynamically. It's really the same idea as behind the official "create HTML table" connector in MS Flow. You can pass a JSON to "create HTML table" and get a HTML table back. The JSON can differ, any count of array-elements, any stucture inside of the array-elements.

 

I want to do also such a general solution in flow as in "create HTML table". Of course the JSON structure has some similarities:

- 1 to x array elements

- each array element consisting of 1 to x key:vale attributs

 

 

Same as the JSON which you can send to "create HTML table".

 

Perhaps someone has a idea for a workarround? Perhaps I have to read the JSON line by line and seperate array-elements and key/values in flow by using of compose-nodes. This would be a much bigger workarround. I am wondering why there is no solution to read array-elements and key-value pairs just one-by-one.

Or I am simply beeing not able to design such a variant JSON schema and flow is capable if I know how.

teqs
Kudo Commander
Kudo Commander

@abm 

I edited the main post again and added two more variants of JSON which are possible. As you see, different count of array-elements and different structure inside of a array-element. But all have the similarities as stated above. 

teqs
Kudo Commander
Kudo Commander

I get it done to do a loop for every array-element in the JSON. That's not the problem.

But I do not get any solution to iterate over the key-value pairs (at JSON it is called "properties" I think) in one of the JSON arrays.

 

But this could make my question much easier, without speaking of inner and outer loops anymore. 🙂

 

So my main questions is:

 

- How do I iterate over all key/value pairs (Properties) in a JSON without knowing the key-names (and don't know the property count)?

- So, I look for a possibility, to get all keys and their values out of a JSON.

- As I said, the JSON is dynamic, but consist of n key-value pairs in every case. So, how do I make a loop get all key/values (properties) of a JSON one-by-one and do a action for every key/value one-by-one?

- See JSON examples in the main post.

 

 

abm
Most Valuable Professional
Most Valuable Professional

Hi @teqs 

 

I don't think you can achieve this via Parse JSON Flow step as your case it's going to be dynamic. Like you mentioned you could possbily do via Compose step using lots of string manipulations which then the solution might going to be very complex. 

 

All I could think is you need to host a custom API handler and pass the JSON object as input parameter. Response Output parameter you could return this as an array back to flow. But this need some programming effort and hosting of API efforts.

 

https://stackoverflow.com/questions/46569434/c-sharp-json-convert-any-dynamic-object-to-key-value-pa...

 

You can also post this under Flow ideas.

 

https://powerusers.microsoft.com/t5/Flow-Ideas/idb-p/FlowIdeas

 

 

 

 



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blog
Power Automate Video Tutorials
teqs
Kudo Commander
Kudo Commander

Im found a solution.

 

It is descibed here to parse JSON and transform it to XML and then search keys with XPATH in Flow:

http://johnliu.net/blog/2017/11/foreach-property-in-microsoftflow-json-with-xpath-microblog

 

Here is another idea with credits to the one above:
https://powerusers.microsoft.com/t5/General-Flow-Discussion/Getting-JSON-keys-in-flow/td-p/99743

 

And here is another solution with doing the JSON to XML transformation:
https://powerusers.microsoft.com/t5/General-Flow-Discussion/convert-json-output-into-xml/td-p/160893

 

 

 

 

 

abm
Most Valuable Professional
Most Valuable Professional

Hi @teqs 

 

Thats good to know. Thanks for letting me know about it.



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blog
Power Automate Video Tutorials

Helpful resources

Announcements

Check out the Copilot Studio Cookbook today!

We are excited to announce our new Copilot Cookbook Gallery in the Copilot Studio Community. We can't wait for you to share your expertise and your experience!    Join us for an amazing opportunity where you'll be one of the first to contribute to the Copilot Cookbook—your ultimate guide to mastering Microsoft Copilot. Whether you're seeking inspiration or grappling with a challenge while crafting apps, you probably already know that Copilot Cookbook is your reliable assistant, offering a wealth of tips and tricks at your fingertips--and we want you to add your expertise. What can you "cook" up?   Click this link to get started: https://aka.ms/CS_Copilot_Cookbook_Gallery   Don't miss out on this exclusive opportunity to be one of the first in the Community to share your app creation journey with Copilot. We'll be announcing a Cookbook Challenge very soon and want to make sure you one of the first "cooks" in the kitchen.   Don't miss your moment--start submitting in the Copilot Cookbook Gallery today!     Thank you,  Engagement Team

Announcing Power Apps Copilot Cookbook Gallery

We are excited to share that the all-new Copilot Cookbook Gallery for Power Apps is now available in the Power Apps Community, full of tips and tricks on how to best use Microsoft Copilot as you develop and create in Power Apps. The new Copilot Cookbook is your go-to resource when you need inspiration--or when you're stuck--and aren't sure how to best partner with Copilot while creating apps.   Whether you're looking for the best prompts or just want to know about responsible AI use, visit Copilot Cookbook for regular updates you can rely on--while also serving up some of your greatest tips and tricks for the Community. Check Out the new Copilot Cookbook for Power Apps today: Copilot Cookbook - Power Platform Community.  We can't wait to see what you "cook" up!    

Welcome to the Power Automate Community

You are now a part of a fast-growing vibrant group of peers and industry experts who are here to network, share knowledge, and even have a little fun.   Now that you are a member, you can enjoy the following resources:   Welcome to the Community   News & Announcements: The is your place to get all the latest news around community events and announcements. This is where we share with the community what is going on and how to participate.  Be sure to subscribe to this board and not miss an announcement.   Get Help with Power Automate Forums: If you're looking for support with any part of Power Automate, our forums are the place to go. From General Power Automate forums to Using Connectors, Building Flows and Using Flows.  You will find thousands of technical professionals, and Super Users with years of experience who are ready and eager to answer your questions. You now have the ability to post, reply and give "kudos" on the Power Automate community forums. Make sure you conduct a quick search before creating a new post because your question may have already been asked and answered. Galleries: The galleries are full of content and can assist you with information on creating a flow in our Webinars and Video Gallery, and the ability to share the flows you have created in the Power Automate Cookbook.  Stay connected with the Community Connections & How-To Videos from the Microsoft Community Team. Check out the awesome content being shared there today.   Power Automate Community Blog: Over the years, more than 700 Power Automate Community Blog articles have been written and published by our thriving community. Our community members have learned some excellent tips and have keen insights on the future of process automation. In the Power Automate Community Blog, you can read the latest Power Automate-related posts from our community blog authors around the world. Let us know if you'd like to become an author and contribute your own writing — everything Power Automate-related is welcome.   Community Support: Check out and learn more about Using the Community for tips & tricks. Let us know in the Community Feedback  board if you have any questions or comments about your community experience. Again, we are so excited to welcome you to the Microsoft Power Automate community family. Whether you are brand new to the world of process automation or you are a seasoned Power Automate veteran - our goal is to shape the community to be your 'go to' for support, networking, education, inspiration and encouragement as we enjoy this adventure together.     Power Automate Community Team

Hear what's next for the Power Up Program

Hear from Principal Program Manager, Dimpi Gandhi, to discover the latest enhancements to the Microsoft #PowerUpProgram, including a new accelerated video-based curriculum crafted with the expertise of Microsoft MVPs, Rory Neary and Charlie Phipps-Bennett. If you’d like to hear what’s coming next, click the link below to sign up today! https://aka.ms/PowerUp  

Tuesday Tip | How to Report Spam in Our Community

It's time for another TUESDAY TIPS, your weekly connection with the most insightful tips and tricks that empower both newcomers and veterans in the Power Platform Community! Every Tuesday, we bring you a curated selection of the finest advice, distilled from the resources and tools in the Community. Whether you’re a seasoned member or just getting started, Tuesday Tips are the perfect compass guiding you across the dynamic landscape of the Power Platform Community.   As our community family expands each week, we revisit our essential tools, tips, and tricks to ensure you’re well-versed in the community’s pulse. Keep an eye on the News & Announcements for your weekly Tuesday Tips—you never know what you may learn!   Today's Tip: How to Report Spam in Our Community We strive to maintain a professional and helpful community, and part of that effort involves keeping our platform free of spam. If you encounter a post that you believe is spam, please follow these steps to report it: Locate the Post: Find the post in question within the community.Kebab Menu: Click on the "Kebab" menu | 3 Dots, on the top right of the post.Report Inappropriate Content: Select "Report Inappropriate Content" from the menu.Submit Report: Fill out any necessary details on the form and submit your report.   Our community team will review the report and take appropriate action to ensure our community remains a valuable resource for everyone.   Thank you for helping us keep the community clean and useful!

Users online (4,934)