You need to sign in to do that
Don't have an account?
bharath kumar 52
parsing json response and displaying it on a vf page
Hi All,
I am working on a PoC where i am consuming data from an external servcie and displaying it on a VF page.
Can someone let me know where i am going wrong and what needs to be done to display the data on the VF page.
I am working on a PoC where i am consuming data from an external servcie and displaying it on a VF page.
Can someone let me know where i am going wrong and what needs to be done to display the data on the VF page.
public class TickerData { public list<Prices> pricelist{get;set;} private static String endpoint='https://koinex.in/api/ticker'; public list<Prices> getmakeTickerData(){ pricelist = new list<Prices>(); Http http= new Http(); HttpRequest request= new HttpRequest(); request.setendpoint(endpoint); request.setMethod('GET'); HttpResponse response = http.send(request); //response contains json body if(response.getStatusCode()==200){ system.debug('Response'+response.getBody()); //JSON2Apex js=JSON2Apex.parse(response.getBody()); JSONParser parser = JSON.createParser (response.getBody()); while (parser.nextToken()!=null) { if (parser.getCurrentToken()== JSONToken.START_ARRAY) { while (parser.nextToken()!= null) { // if(response.getstatusCode() == 200 && response.getbody() != null){ pricelist=(List<Prices>)json.deserialize(response.getbody(),List<Prices>.class); }// /*if (parser.getCurrentToken()== JSONToken.START_OBJECT) { JSON2Apex the = (JSON2Apex) parser.readValueAs (JSON2Apex.class); }*/ } } //Map<String,Object> results=(Map<String,Object>)JSON.deserializeUntyped(response.getBody()); /*List<Object> prices=(List<Object>)results.get('prices'); for(Object o:prices){ System.debug('Prices :'+o); }*/ } } return pricelist; } public class Prices { public String BTC{get;set;} public String ETH{get;set;} public String XRP{get;set;} public String BCH{get;set;} public String LTC{get;set;} public String NEO{get;set;} public Double MIOTA{get;set;} public String TRX{get;set;} public String OMG{get;set;} public String AE{get;set;} public String ZRX{get;set;} public String GAS{get;set;} public String BAT{get;set;} public String GNT{get;set;} public String REQ{get;set;} public String AION{get;set;} public String NCASH{get;set;} public String XLM{get;set;} } public class JSON2Apex { public Prices prices; public Stats stats; } public Prices prices; public Stats stats; public class ETH { public String currency_full_form; public String currency_short_form; public String per_change; public Double last_traded_price; public String lowest_ask; public String highest_bid; public String min_24hrs; public String max_24hrs; public Integer vol_24hrs; } public class Stats { public ETH ETH; public ETH BTC; public ETH LTC; public ETH XRP; public ETH BCH; public ETH OMG; public ETH REQ; public ETH ZRX; public ETH GNT; public ETH BAT; public ETH AE; public ETH TRX; public ETH XLM; public ETH NEO; public ETH GAS; public ETH NCASH; public ETH AION; } }
VF Page : <apex:page controller="TickerData"> <apex:form> <apex:pageBlock > <apex:pageBlockTable value="{!makeTickerData}" var="wrap" width="100%"> <apex:column headerValue="BTC" value="{!wrap.BTC}"/> <apex:column headerValue="ETH" value="{!wrap.ETH}"/> </apex:pageBlockTable> </apex:pageBlock> </apex:form> </apex:page>
I have modified your method getmakeTickerData() which will parse the data correctly.
Please note there are no list of array for prices is returned in json from given url, thats why your parsing logic is not working.
JSON response seems simple so directly deserialized for class TickerData.
Simply replaced your method 's code with above code and let me know if still you are not able to get data on vf page.
All Answers
Check debug log whether the data is returned back from the service.
Double check the column names BTC, ETC, etc are of the same case in the service too.
Sample code - http://www.infallibletechie.com/2017/08/simple-outbound-rest-api-with-json.html
I have modified your method getmakeTickerData() which will parse the data correctly.
Please note there are no list of array for prices is returned in json from given url, thats why your parsing logic is not working.
JSON response seems simple so directly deserialized for class TickerData.
Simply replaced your method 's code with above code and let me know if still you are not able to get data on vf page.