cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Citrix73
Helper I
Helper I

JSON format not correct

I was able to call my WCF service from a stream. I now have the following problem.
My WCF service returns a JSON that I believe is correctly formatted and in other applications that call it I have no problem as I can extract the result object from the response which contains only the Json.
When I call the service from my flow what I receive in output is not a clean Json but the body that contains the Json inside.
I guess this is why from Power apps when I try to run the flow.run () command it tells me that the JSON is incorrect.
How can I isolate the result from the Body? Below you can see the output of mi HTTP request
Thanks

 

 

 

  {
    "BANFN": "5000003823",
    "BNFPO": "00010",
    "TXZ01": "GIGASET A540 VOIP",
    "ERNAM": "RLEWIN",
    "MENGE": "       5.000",
    "EKGRP": "N16"
    }
]</visualizza_lista_rda_jsonResult><uid>fcedrini</uid><pwd>pascol</pwd></visualizza_lista_rda_jsonResponse></s:Body></s:Envelope>
1 ACCEPTED SOLUTION

Accepted Solutions

Unfortunately, there's no built in way to convert JSON to a collection.

Perhaps you could use one of the workarounds that are mentioned here?

https://powerusers.microsoft.com/t5/Building-Power-Apps/Parse-JSON-string-in-Power-APPS/td-p/381832

 

View solution in original post

6 REPLIES 6
timl
Super User
Super User

Hi @Citrix73 

With this example result from your WCF service, you can isolate the JSON content by searching for the positions of the { and } characters. You can then call the mid function to retrieve the content between these two characters.

https://docs.microsoft.com/en-gb/powerapps/maker/canvas-apps/functions/function-left-mid-right

You can then call the plaintext function to unencode the output.

Here are the formulas to store the input values in variables.

Set(varWsOutput,
"<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/""><s:Body><visualizza_lista_rda_jsonResponse xmlns=""http://...;
  {&#xD;
    ""BANFN"": ""5000003823"",&#xD;
    ""BNFPO"": ""00010"",&#xD;
    ""TXZ01"": ""GIGASET A540 VOIP"",&#xD;
    ""ERNAM"": ""RLEWIN"",&#xD;
    ""MENGE"": ""       5.000"",&#xD;
    ""EKGRP"": ""N16""&#xD;
    }&#xD;
]</visualizza_lista_rda_jsonResult><uid>fcedrini</uid><pwd>pascol</pwd></visualizza_lista_rda_jsonResponse></s:Body></s:Envelope>");

Set(varStart,
Find(
"{", varWsOutput));

Set(varEnd,
Find(
"}", varWsOutput))


The following formula will return the JSON content.

PlainText(Mid(varWsOutput,
    varStart, 
    (varEnd-varStart)+1)
)

timl_0-1603182813773.png

 

 

 

Thanks Timl,

excuse me but i'm novice on powerapps.

Where i have to insert these formulas?

I use a Flow to call the wcf service. It's scorrect? In image Below you can see my call.

I take this opportunity for ask you how can i dinamically set the parameters of request.

As you can see in attachment now i call the service copying in the body of request all the query parameters.

Thanks a lot

 

Citrix73_1-1603283292570.png

 

 

I think that i am near the solution.

with your help now i have isolated the clear json

With the formula that you suggest i have a variable vith the clear Json but if i try to populate a collection with this variable it seem not recognize the json but a single text as you can see in the secon screenshot where you can see the collection that i want to connect to my vertical gallery. How can i populate correctly the collection? Please

Citrix73_0-1603815302495.png

Citrix73_1-1603815592193.png

 

 

Unfortunately, there's no built in way to convert JSON to a collection.

Perhaps you could use one of the workarounds that are mentioned here?

https://powerusers.microsoft.com/t5/Building-Power-Apps/Parse-JSON-string-in-Power-APPS/td-p/381832

 

Your help has been invaluable.
I populated the collection although I had to make some corrections to your formula as using the mid function with start and end {} the resulting variable was only the first record of the Json. Therefore using [] instead the result is all the complete Json that you see below.
Now I have another problem using the workaround you suggested to load the collection from the Json and passing it this Json always returns me only the first record in the collection.
I have created a flow as described in workarond that you suggest me that parse this Json but the result is only first record.
Where is the problem? Below i attached also the screenshot of my flow to convert JSON to Collection
Thanks a lot

 

{
"BANFN": "5000003840",
"BNFPO": "00010",
"TXZ01": "BROTHER 2710 DN",
"ERNAM": "RLEWIN",
"MENGE": " 1.000",
"EKGRP": "N16"
},
{
"BANFN": "5000003843",
"BNFPO": "00010",
"TXZ01": "SWITCH 8P NETGEAR",
"ERNAM": "RLEWIN",
"MENGE": " 1.000",
"EKGRP": "N16"
},
{
"BANFN": "5000003843",
"BNFPO": "00020",
"TXZ01": "GIGASET A170",
"ERNAM": "RLEWIN",
"MENGE": " 1.000",
"EKGRP": "N16"
},
{
"BANFN": "5000003842",
"BNFPO": "00010",
"TXZ01": "SWITCH UNIEURO 5 P",
"ERNAM": "RLEWIN",
"MENGE": " 1.000",
"EKGRP": "N16"
}

 
 

 

 

 

 

 

 
 

 

Excuse me.

Resolved.

The Json schema was not correct

Helpful resources

Announcements
Power Apps News & Annoucements carousel

Power Apps News & Announcements

Keep up to date with current events and community announcements in the Power Apps community.

Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Power Apps Community Blog Carousel

Power Apps Community Blog

Check out the latest Community Blog from the community!

Top Solution Authors
Top Kudoed Authors
Users online (3,068)