java - JSON parse for TFL Open Data -


hello i'm trying parse json file link.

the returned json follows-

enter image description here

i need loop through instances of journeys first, have loop through legs each journeys detailed instruction. can see each legs consists of instruction in parts returns string, ultimate goal combine these string each journeys , display them textview. above json end goal display -

jubilee line towards stratford, or north greenwich

northern line towards edgware, or high barnet

till i've been trying navigate through json without luck.

here code i've been working on-

try {        //object json file.        jsonarray journey = object.getjsonarray("journeys");        if (journey != null) {         //retrieving number of possible routes.         (int i=0;i<journey.length();i++){              routes.add(journey.getjsonobject(i));         }         //retrieving number of possible legs each route.         if (!routes.isempty()){         (int j = 0; j< routes.size(); j++){              legs.add(j, routes.get(j).getjsonarray("legs"));         }         //trying retrieve detailed instruction here , failing.         for(int k=0;k<routes.get(k).getjsonarray("legs").length();k++){             instructiondetail.add(k,legs.get(k).getjsonobject(k).getjsonobject("instruction"));          }      }  }  } catch (jsonexception e) {                     e.printstacktrace();               } 

i believe approach wrong , didn't loop right.. suggestions parse , navigate , other approach highly appreciated!

thanks!

update:

enter image description here enter image description here

jsonarray journeys = new jsonobject("");         for(int = 0 ; < journeys.length() ; i++) { // traverse journeys             jsonobject journey = journeys.getjsonobject(i); // journeys(i) -> journey             if(journey.has("legs")) { // if journey has "legs" key                 jsonarray legs = journey.getjsonarray("legs"); // legs array journey object                 for(int j = 0 ; j < legs.length() ; j++) { // traverse legs                     jsonobject leg = legs.getjsonobject(j); // legs(j) -> leg                     if(leg.has("instruction")) { // if leg has "instruction" key in                          jsonobject instruction = leg.getjsonobject("instruction"); // instruction jsonobject                         string detailed = instruction.optstring("detailed", "fallback detailed"); // detailed string in instruction object                     }                 }             }         } 

update:

private static class detail {         string journeytype;         string legtype;         string instructiontype;         string detail;          public detail(string journeytype, string legtype, string instructiontype, string detail) {             this.journeytype = journeytype;             this.legtype = legtype;             this.instructiontype = instructiontype;             this.detail = detail;         }     } 

... ...

list<detail> detaillist = new arraylist<>();         jsonarray journeys = new jsonobject("");         for(int = 0 ; < journeys.length() ; i++) { // traverse journeys             jsonobject journey = journeys.getjsonobject(i); // journeys(i) -> journey             if(journey.has("legs")) { // if journey has "legs" key                 jsonarray legs = journey.getjsonarray("legs"); // legs array journey object                 for(int j = 0 ; j < legs.length() ; j++) { // traverse legs                     jsonobject leg = legs.getjsonobject(j); // legs(j) -> leg                     if(leg.has("instruction")) { // if leg has "instruction" key in                         jsonobject instruction = leg.getjsonobject("instruction"); // instruction jsonobject                         string journeytype = journey.getstring("$type");                         string legtype = leg.getstring("$type");                         string instructiontype = instruction.getstring("$type");                         string detailed = instruction.getstring("detailed"); // detailed string in instruction object                         detaillist.add(new detail(journeytype, legtype, instructiontype, detailed));                     }                 }             }         }         for(detail detail : detaillist) {             textview textview = new textview([yourcontext]);             textview.settext(detail.detail);             yourcontentviewgroup.addview(textview);             // or can use view.inflate(context, layoutres, yourcontentviewgroup) , design layout show other detail instance values         } 

Comments