java - Analyse large String using processing -


i have string need split , add different arrays.

this string

{"locations":[{"latitude":"1.3846519","longitude":"103.763276","starttime":"1422720220292","duration":"0","accuracy":"50.981998443604"},{"latitude":"1.3845814","longitude":"103.7634384","starttime":"1422720520181","duration":"0","accuracy":"55.532001495361"},{"latitude":"1.3844195","longitude":"103.763209","starttime":"1422720820265","duration":"0","accuracy":"34.5"},{"latitude":"1.3844051","longitude":"103.7632272","starttime":"1422721120466","duration":"0","accuracy":"36"}, ],"success":1}

the output want in different arrays.

latitudearray[] = // string array of latitude values longitudearray[] = // string array of longitude values starttimearray[] = // string array of start time values durationarray[] = // string array of duration values accuracyarray[] = // string array of accuracy values 

i using processing ide analyse data , tried matchall() , split() functions couldn't work. please me in getting output? thanks.

edit: managed extract 1 latitude value method seems inefficient. how can inside loop?

    string[] locationdata = loadstrings("sample.txt");     arraylist<string> latitudearray = new arraylist<string>();     arraylist<string> longitudearray = new arraylist<string>();     arraylist<string> starttimearray = new arraylist<string>();     arraylist<string> durationarray = new arraylist<string>();     arraylist<string> accuracyarray = new arraylist<string>();     string temp;     int index;      index = locationdata[0].indexof("latitude");     println(index);     temp = locationdata[0].substring(index+11);     println(temp);     index = temp.indexof(",");     println(index);     latitudearray.add(temp.substring(0,(index-1)));     println(latitudearray.get(0)); 

wasn't sure in format loadstrings() method returns, used initial string provided.

you're heading in right direction string methods. code tries benefit single input string. if split on "latitude", elemets in array, except first one, have numbers we're interested on in begining. e.g.: split("latitude\":\"") gives latitudes in begining:

[0] = {"locations":[{" [1] = 1.3846519","longitude":"103.763276","starttime":"1422720220292","duration":"0","accuracy":"50.981998443604"},{" [2] = 1.3845814","longitude":"103.7634384","starttime":"1422720520181","duration":"0","accuracy":"55.532001495361"},{" [3] = 1.3844195","longitude":"103.763209","starttime":"1422720820265","duration":"0","accuracy":"34.5"},{" [4] = 1.3844051","longitude":"103.7632272","starttime":"1422721120466","duration":"0","accuracy":"36"}, ],"success":1} 

to read actual numbers, need read until next quote("). doing indexof("\"") give use position till must read retrieve number. so, perform substring(0,indexofquote) on value. repeat again, time splitting on "longitude" them.

full program:

public static void main(string[] args) {     final string input = "{\"locations\":["             + "{\"latitude\":\"1.3846519\",\"longitude\":\"103.763276\",\"starttime\":\"1422720220292\",\"duration\":\"0\",\"accuracy\":\"50.981998443604\"},"             + "{\"latitude\":\"1.3845814\",\"longitude\":\"103.7634384\",\"starttime\":\"1422720520181\",\"duration\":\"0\",\"accuracy\":\"55.532001495361\"},"             + "{\"latitude\":\"1.3844195\",\"longitude\":\"103.763209\",\"starttime\":\"1422720820265\",\"duration\":\"0\",\"accuracy\":\"34.5\"},"             + "{\"latitude\":\"1.3844051\",\"longitude\":\"103.7632272\",\"starttime\":\"1422721120466\",\"duration\":\"0\",\"accuracy\":\"36\"},"             + " ],\"success\":1}";     string latitudearray[] = splitandcollect("latitude", input);     string longitudearray[] = splitandcollect("longitude", input);     string starttimearray[] = splitandcollect("starttime", input);     string durationarray[] = splitandcollect("duration", input);     string accuracyarray[] = splitandcollect("accuracy", input);     system.out.println("done"); }  private static string[] splitandcollect(string string, string input) {     final string colon = "\":\"";     string[] split = input.split(string + colon);     string[] output = new string[split.length - 1];     (int = 0; < output.length; i++)         // using [i+1] - since split[0] contains "locations".         // subsequent splits have numbers needed.         output[i] = split[i + 1].substring(0, split[i + 1].indexof("\""));     system.out.println(string + "\n" + arrays.tostring(output));     return output; } 

Comments