cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ericonline
Community Champion
Community Champion

Parse JSON Assistance

Hello,

When creating Custom Connectors in PowerApps, I can just paste a Postman response Body into the "Sample" area and PowerApps automagically parses out the items I need with the correct labels. 

 

With Flow, this is not the case. Pasting a Response Body from Postman required manual cleanup to pass validation. Now that it passes validation though, I can't tell the parameters apart.

 

Many of them are just labeled "type" due to how Flow parsed the Sample Payload. 

 

How can I get the correct labels for each parameter of the JSON payload?

 

Thank you!

 

Postman response Body:

{
    "type": "FeatureCollection",
    "metadata": {
        "generated": 1557183095000,
        "url": "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2019-04-02&endtime=2019-04-03&latitude=47&longitude=-122&maxradiuskm=300&orderby=magnitude-asc",
        "title": "USGS Earthquakes",
        "status": 200,
        "api": "1.8.1",
        "count": 5
    },
    "features": [
        {
            "type": "Feature",
            "properties": {
                "mag": 0.8,
                "place": "18km NE of Kalama, Washington",
                "time": 1554228490230,
                "updated": 1554233445550,
                "tz": -480,
                "url": "https://earthquake.usgs.gov/earthquakes/eventpage/uw61515642",
                "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=uw61515642&format=geojson",
                "felt": null,
                "cdi": null,
                "mmi": null,
                "alert": null,
                "status": "reviewed",
                "tsunami": 0,
                "sig": 10,
                "net": "uw",
                "code": "61515642",
                "ids": ",uw61515642,",
                "sources": ",uw,",
                "types": ",geoserve,origin,phase-data,",
                "nst": 7,
                "dmin": null,
                "rms": 0.21,
                "gap": 237,
                "magType": "ml",
                "type": "earthquake",
                "title": "M 0.8 - 18km NE of Kalama, Washington"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -122.65483333333,
                    46.109666666667,
                    15.96
                ]
            },
            "id": "uw61515642"
        },
        {
            "type": "Feature",
            "properties": {
                "mag": 0.95,
                "place": "4km NNW of Venersborg, Washington",
                "time": 1554248973310,
                "updated": 1554311351470,
                "tz": -480,
                "url": "https://earthquake.usgs.gov/earthquakes/eventpage/uw61515687",
                "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=uw61515687&format=geojson",
                "felt": null,
                "cdi": null,
                "mmi": null,
                "alert": null,
                "status": "reviewed",
                "tsunami": 0,
                "sig": 14,
                "net": "uw",
                "code": "61515687",
                "ids": ",uw61515687,",
                "sources": ",uw,",
                "types": ",geoserve,origin,phase-data,",
                "nst": 5,
                "dmin": null,
                "rms": 0.22,
                "gap": 330,
                "magType": "ml",
                "type": "explosion",
                "title": "M 1.0 Explosion - 4km NNW of Venersborg, Washington"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -122.442,
                    45.8165,
                    -1.07
                ]
            },
            "id": "uw61515687"
        },
        {
            "type": "Feature",
            "properties": {
                "mag": 1.04,
                "place": "7km WNW of Federal Way, Washington",
                "time": 1554183431770,
                "updated": 1554407575360,
                "tz": -480,
                "url": "https://earthquake.usgs.gov/earthquakes/eventpage/uw61515602",
                "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=uw61515602&format=geojson",
                "felt": null,
                "cdi": null,
                "mmi": null,
                "alert": null,
                "status": "reviewed",
                "tsunami": 0,
                "sig": 17,
                "net": "uw",
                "code": "61515602",
                "ids": ",uw61515602,",
                "sources": ",uw,",
                "types": ",geoserve,origin,phase-data,",
                "nst": 14,
                "dmin": null,
                "rms": 0.13,
                "gap": 107,
                "magType": "ml",
                "type": "earthquake",
                "title": "M 1.0 - 7km WNW of Federal Way, Washington"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -122.39716666667,
                    47.357166666667,
                    17.03
                ]
            },
            "id": "uw61515602"
        },
        {
            "type": "Feature",
            "properties": {
                "mag": 2.06,
                "place": "3km ENE of Granite Falls, Washington",
                "time": 1554229776760,
                "updated": 1554418212281,
                "tz": -480,
                "url": "https://earthquake.usgs.gov/earthquakes/eventpage/uw61515652",
                "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=uw61515652&format=geojson",
                "felt": 1,
                "cdi": 2.7,
                "mmi": null,
                "alert": null,
                "status": "reviewed",
                "tsunami": 0,
                "sig": 66,
                "net": "uw",
                "code": "61515652",
                "ids": ",uw61515652,",
                "sources": ",uw,",
                "types": ",dyfi,geoserve,origin,phase-data,",
                "nst": 10,
                "dmin": null,
                "rms": 0.15,
                "gap": 87,
                "magType": "ml",
                "type": "explosion",
                "title": "M 2.1 Explosion - 3km ENE of Granite Falls, Washington"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -121.92733333333,
                    48.095,
                    -0.48
                ]
            },
            "id": "uw61515652"
        },
        {
            "type": "Feature",
            "properties": {
                "mag": 2.68,
                "place": "23km W of Tieton, Washington",
                "time": 1554210002380,
                "updated": 1555258043040,
                "tz": -480,
                "url": "https://earthquake.usgs.gov/earthquakes/eventpage/uw61515622",
                "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=uw61515622&format=geojson",
                "felt": 6,
                "cdi": 3.1,
                "mmi": null,
                "alert": null,
                "status": "reviewed",
                "tsunami": 0,
                "sig": 112,
                "net": "uw",
                "code": "61515622",
                "ids": ",uw61515622,us2000k94k,",
                "sources": ",uw,us,",
                "types": ",dyfi,geoserve,origin,phase-data,",
                "nst": 28,
                "dmin": null,
                "rms": 0.28,
                "gap": 78,
                "magType": "ml",
                "type": "earthquake",
                "title": "M 2.7 - 23km W of Tieton, Washington"
            },
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -121.0665,
                    46.7035,
                    4.22
                ]
            },
            "id": "uw61515622"
        }
    ],
    "bbox": [
        -122.65483333333,
        45.8165,
        -1.07,
        -121.0665,
        48.095,
        17.03
    ]
}

Result of Sample Payload in Flow (required some cleanup):

{
    "type": "string",
    "properties": {
        "type": {
            "type": "string"
        },
        "metadata": {
            "type": "object",
            "properties": {
                "generated": {
                    "type": "integer"
                },
                "url": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "status": {
                    "type": "integer"
                },
                "api": {
                    "type": "string"
                },
                "count": {
                    "type": "integer"
                }
            }
        },
        "features": {
            "type": "array",
            "items": {
                "type": "string",
                "properties": {
                    "type": {
                        "type": "string"
                    },
                    "properties": {
                        "type": "object",
                        "properties": {
                            "mag": {
                                "type": "number"
                            },
                            "place": {
                                "type": "string"
                            },
                            "time": {
                                "type": "integer"
                            },
                            "updated": {
                                "type": "integer"
                            },
                            "tz": {
                                "type": "integer"
                            },
                            "url": {
                                "type": "string"
                            },
                            "detail": {
                                "type": "string"
                            },
                            "felt": {},
                            "cdi": {},
                            "mmi": {},
                            "alert": {},
                            "status": {
                                "type": "string"
                            },
                            "tsunami": {
                                "type": "integer"
                            },
                            "sig": {
                                "type": "integer"
                            },
                            "net": {
                                "type": "string"
                            },
                            "code": {
                                "type": "string"
                            },
                            "ids": {
                                "type": "string"
                            },
                            "sources": {
                                "type": "string"
                            },
                            "types": {
                                "type": "string"
                            },
                            "nst": {
                                "type": "integer"
                            },
                            "dmin": {},
                            "rms": {
                                "type": "number"
                            },
                            "gap": {
                                "type": "integer"
                            },
                            "magType": {
                                "type": "string"
                            },
                            "type": {
                                "type": "string"
                            },
                            "title": {
                                "type": "string"
                            }
                        }
                    },
                    "geometry": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string"
                            },
                            "coordinates": {
                                "type": "array",
                                "items": {
                                    "type": "number"
                                }
                            }
                        }
                    },
                    "id": {
                        "type": "string"
                    }
                },
                "required": [
                    "type",
                    "properties",
                    "geometry",
                    "id"
                ]
            }
        },
        "bbox": {
            "type": "array",
            "items": {
                "type": "number"
            }
        }
    }
}

Dynamic Content showing "type" duplication:

image.png

1 ACCEPTED SOLUTION

Accepted Solutions
ericonline
Community Champion
Community Champion

@mosmas (aka "Flow Poppa", aka "Flow Maestro", aka "Flow Magic", aka "Don't Call Me On The Weekend" 🙂 )comes through with the fix!!

Key 1:  

  • Read the failure message and fix the schema!
  • "features.properties.gap" in this case is the path in the nested JSON where the error is occurring
  • image.png
  • One caveat that @mosmas  brought up is when a value can have BOTH a number (or string) AND a NULL. 
    • It needs special treatment: ["integer", "null"]
    • Example:
    • image.png

Key 2: 

  • Once the schema passes validation, use the Select Action to create a sweet little array of each object

BONUS!!:

  • You can search your Parse JSON sample schema with CTRL+F
  • image.png

Thanks so much @mosmas !!

--------------

@KickingApps , this is a good one to play with!

View solution in original post

2 REPLIES 2
ericonline
Community Champion
Community Champion

@mosmas (aka "Flow Poppa", aka "Flow Maestro", aka "Flow Magic", aka "Don't Call Me On The Weekend" 🙂 )comes through with the fix!!

Key 1:  

  • Read the failure message and fix the schema!
  • "features.properties.gap" in this case is the path in the nested JSON where the error is occurring
  • image.png
  • One caveat that @mosmas  brought up is when a value can have BOTH a number (or string) AND a NULL. 
    • It needs special treatment: ["integer", "null"]
    • Example:
    • image.png

Key 2: 

  • Once the schema passes validation, use the Select Action to create a sweet little array of each object

BONUS!!:

  • You can search your Parse JSON sample schema with CTRL+F
  • image.png

Thanks so much @mosmas !!

--------------

@KickingApps , this is a good one to play with!

View solution in original post

BONUS BONUS!!

  • Did you know you can change the names of parameters returned from an HTTP request as part of parsing JSON!
  • WOW
  • Example
    • There are two keys named "url" in the schema 
    • image.png
    • You can rename them IN THE SCHEMA to differentiate them!
    • image.png
    • This is crazy powerful!!

Again, all praises go to @mosmas !! Excellent work and thanks for sharing the expertise.

Helpful resources

Announcements
Process Advisor

Introducing Process Advisor

Check out the new Process Advisor community forum board!

MPA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

Users online (37,177)