@KenV7 I have some good news. We were finally able to figure out how to make this work.
After you parse json, you will add the next step to Create Item in your sharepoint list, however, you won't use any of the dynamic content from your parse json. If you do, it will immediately add the For Each loop and you're back to having multiple entries for one completed web form.
Rather you want to do a unique string expression that will allow you to grab data that was gathered in the parse json, but only the exact data you need from the cooresponding person who entered it.
For example.
lets say you have a column in the sharepoint list that is named CITY that is filled out by the web form filler, and then you have a column called STATE that is filled in by the approver.
in your parse json, when you view the output, it should tell you what the name of the column is that cooresponds with the CITY field as well as the STATE field, it should be in quotes. I believe the names that are pulled into the parse json are the names of how they were labeled when you create the webform, so they may not match up identically.
When you write your expression to get the CITY that was entered by the web form filler, it will be as follows.
body('Parse_JSON)['formDataList']?[0]?['CITY']
the [0] above is the web form filler. any field you wish to grab from the web form filler will have a [0]. If your form has a web form filler, then it goes to another person for approver. Any fields filled in by the approver will have a [1] in that area, and so on and so forth for any additional people the web form goes to for modifications or approvals. If you have a web from filler, then it goes to 2 other people, you will have 0, 1, and 2. 0 being the web form filler, 1 being the next person it went to after the web from filler, and 2 being the last person it went to.
So after the city is entered by the web form filler and sent to the next person to enter the state, your next expression will be as follows to get the state information entered by the person after the web form filler.
body('Parse_JSON)['formDataList']?[1]?['STATE']
the 0 changed to a 1, because it was the 2nd person to touch the webform that entered the state field, and the column changed from CITY to STATE because STATE was left blank by the original form filler.
You do this for each subsequent entry that you have on your sharepoint list by going through and matching up the 0, 1, 2 etc with whichever person in your process filled out each item. If all you have is a web form filler and a signer, its easy, all of them will be 0. Just remember the field between the quotes, like "CITY" or "STATE" is whatever is between the quotes in your parse json, not what your column in the sharepoint list is.
In the end, your create item in a sharepoint list entry in power automate will have no dynamic content from the parse json, it will all be unique expressions. Give it a try and let me know if you have any issues.