Json parsing..

Put your problem here if it does not fit any of the other categories.

Json parsing..

Postby teabof » Sun May 30, 2010 4:09 pm

Hi! :D
I'm trying to parse a json file like this
Syntax: [ Download ] [ Hide ]
Using javascript Syntax Highlighting
  1. {
  2. "zoom_factor":13,
  3. "dimensions":
  4.                         {
  5.                                 "width":400,
  6.                                 "height":400
  7.                         },
  8. "zoom_urls":
  9.                         {
  10.                                 "out":"http://clients.multimap.com/etc..",
  11.                                 "in":"http://clients.multimap.com/etc.."
  12.                         },
  13. "bounds":
  14.                         {
  15.                                 "south_west":
  16.                                                         {
  17.                                                                 "lat":"45",
  18.                                                                 "lon":"25"
  19.                                                         },
  20.                                 "north_east":
  21.                                                         {
  22.                                                                 "lat":"45",
  23.                                                                 "lon":"25"
  24.                                                         }
  25.                         },
  26. "orig_map_center":{},
  27. "map_data":
  28.                         [
  29.                         {
  30.                                 "name":"Tele Atlas",
  31.                                 "id":916
  32.                         }
  33.                         ],
  34. "map_center":
  35.                         {
  36.                                 "point":
  37.                                                 {
  38.                                                         "lat":"45",
  39.                                                         "lon":"25"
  40.                                                 },
  41.                                 "tile":
  42.                                                 {
  43.                                                         "y":2629.234,
  44.                                                         "x":2157.20
  45.                                                 }
  46.                         },
  47. "marker":
  48.                         [
  49.                         {
  50.                                 "opacity":null,
  51.                                 "text_size":null,
  52.                                 "point":
  53.                                                 {
  54.                                                         "lat":"45",
  55.                                                         "lon":"25"
  56.                                                 },
  57.                                 "icon_name":"default.png",
  58.                                 "meta_data":
  59.                                                         {
  60.                                                                 "y":200.01667,
  61.                                                                 "x":200.00291
  62.                                                         },
  63.                                 "label":1
  64.                         }
  65.                         ],
  66. "pan_urls":
  67.                         {
  68.                                 "south":"http://clients.multimap.com/API/etc..",
  69.                                 "south_west":"http://clients.multimap.com/etc..",
  70.                                 "south_east":"http://clients.multimap.com/etc..",
  71.                                 "west":"http://clients.multimap.com/etc..",
  72.                                 "east":"http://clients.multimap.com/etc..",
  73.                                 "north":"http://clients.multimap.com/etc..",
  74.                                 "north_west":"http://clients.multimap.com/etc..",
  75.                                 "north_east":"http://clients.multimap.com/etc.."
  76.                         },
  77.                        
  78. "map_url":"http://clients.multimap.com/etc.."
  79. }
Parsed in 0.016 seconds, using GeSHi 1.0.8.4
from multimap.com
First i created a Class which fits every camps of the json file (in /raw folder), then the parser read the file, store the data in an object and print them.
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. void ParseAndSave()
  2.     {
  3.         InputStream is = getResources().openRawResource(R.raw.filejson);
  4.         BufferedReader br = null;
  5.         String jsonStr = "";
  6.        
  7.         try
  8.         {
  9.                 MyMap data= new MyMap();
  10.                         String x = "";
  11.                         br = new BufferedReader(new InputStreamReader(is));
  12.                 String line;
  13.                 StringBuilder sb = new StringBuilder();
  14.  
  15.                 while ((line = br.readLine()) != null) {
  16.                         sb.append(line).append("\n");
  17.                 }
  18.  
  19.                 jsonStr = sb.toString();
  20.  
  21.                 JSONObject obj = new JSONObject(jsonStr);
  22.                
  23.                 data.zoom=obj.getInt("zoom_factor");
  24.                 data.map_url=obj.getString("map_url");              
  25.                
  26.                 //zoom_urls
  27.                 JSONObject zoom_urls= obj.getJSONObject("zoom_urls");
  28.                 data.z_urls.out=zoom_urls.getString("out");
  29.                 data.z_urls.in=zoom_urls.getString("in");
  30.                
  31.                 //bounds
  32.                 JSONObject bounds = obj.getJSONObject("bounds");
  33.                
  34.                 JSONObject sw = bounds.getJSONObject("south_west");
  35.                 data.bounds.south_w.lat=sw.getDouble("lat");
  36.                 data.bounds.south_w.lon=sw.getDouble("lon");
  37.                
  38.                 JSONObject ne = bounds.getJSONObject("north_east");
  39.                 data.bounds.north_e.lat=ne.getDouble("lat");
  40.                 data.bounds.north_e.lon=ne.getDouble("lon");
  41.                
  42.                 //map data
  43.                 JSONArray map_data = obj.getJSONArray("map_data");
  44.                
  45.                  JSONObject map_data00 = map_data.getJSONObject(0);
  46.                 data.map_data.name=map_data00.getString("name");
  47.                 data.map_data.id=map_data00.getString("id");
  48.                
  49.                 //map center
  50.                 JSONObject map_center = obj.getJSONObject("bounds");
  51.                
  52.                 JSONObject point = map_center.getJSONObject("point");
  53.                 data.map_center.point.lat=point.getDouble("lat");
  54.                 data.map_center.point.lon=point.getDouble("lon");
  55.                
  56.                 JSONObject tile = map_center.getJSONObject("tile");
  57.                 data.map_center.tile.lat=tile.getDouble("lat");
  58.                 data.map_center.tile.lon=tile.getDouble("lon");
  59.                
  60.                 //marker
  61.                 JSONArray marker = obj.getJSONArray("marker");
  62.                 JSONObject opacity = marker.getJSONObject(0);
  63.                 data.marker.opac=opacity.getString("opacity");
  64.                 JSONObject text_size = marker.getJSONObject(1);
  65.                 data.marker.tsize=text_size.getInt("text_size");
  66.                 JSONObject m_point = marker.getJSONObject(2);
  67.                 data.marker.point.lat=m_point.getDouble("lat");
  68.                 data.marker.point.lon=m_point.getDouble("lon");
  69.                 JSONObject icon_name= marker.getJSONObject(3);
  70.                 data.marker.iconname=icon_name.getString("icon_name");
  71.                 JSONObject meta_data= marker.getJSONObject(4);
  72.                 data.marker.metadata.lat=meta_data.getDouble("y");
  73.                 data.marker.metadata.lon=meta_data.getDouble("x");
  74.                 JSONObject label= marker.getJSONObject(5);
  75.                 data.marker.label=label.getInt("label");
  76.                
  77.                 //pan urls
  78.                 JSONObject pan_urls = obj.getJSONObject("pan_urls");
  79.                 data.pan_urls.s=pan_urls.getString("south");
  80.                 data.pan_urls.sw=pan_urls.getString("south_west");
  81.                 data.pan_urls.se=pan_urls.getString("south_east");
  82.                 data.pan_urls.w=pan_urls.getString("west");
  83.                 data.pan_urls.e=pan_urls.getString("east");
  84.                 data.pan_urls.n=pan_urls.getString("north");
  85.                 data.pan_urls.nw=pan_urls.getString("north_west");
  86.                 data.pan_urls.ne=pan_urls.getString("north_east");
  87.                
  88.                 x= data.toString();
  89.                                            
  90.                 Print(x);
  91.         }
  92.         catch (Exception je)
  93.         {
  94.                 setStatus("Error: " + je.getMessage());
  95.         }
  96.     }
  97.     void Print(String x)
  98.     {
  99.                 TextView tv = (TextView) findViewById(R.id.txtStaietus);
  100.                 tv.setText(x);          
  101.     }
Parsed in 0.049 seconds, using GeSHi 1.0.8.4

With this code i always get "Error: ", without any error info.
Any idea?
I'm only a newbie of android and java programming!
I'm an Android newbie from a little town in Italy!
No android now, only emu :(
teabof
Freshman
Freshman
 
Posts: 3
Joined: Sun May 30, 2010 3:28 pm

Top

Re: Json parsing..

Postby nicholas.hauschild » Mon May 31, 2010 3:54 am

Are you getting this "Error:" in LogCat? If not, you should be seeing a stack trace in LogCat which we should be able to help with. Please post it here.

Good Luck!
-Nick
nicholas.hauschild
Master Developer
Master Developer
 
Posts: 310
Joined: Fri Dec 04, 2009 4:50 am

Re: Json parsing..

Postby teabof » Mon May 31, 2010 10:58 am

Are you getting this "Error:" in LogCat? If not, you should be seeing a stack trace in LogCat which we should be able to help with. Please post it here.
no: Print(x) should print in the App on emulator the content of jsonfile or the exception that blocks reading file.

In logCat i see this message: "Default buffer size used in BufferedReader constructor. It would be better to be explicit if an .."
I'm an Android newbie from a little town in Italy!
No android now, only emu :(
teabof
Freshman
Freshman
 
Posts: 3
Joined: Sun May 30, 2010 3:28 pm

Re: Json parsing..

Postby nicholas.hauschild » Mon May 31, 2010 4:55 pm

Yes, post everything from logcat. That will be most helpful for us to help you!
nicholas.hauschild
Master Developer
Master Developer
 
Posts: 310
Joined: Fri Dec 04, 2009 4:50 am

Top

Return to Other Coding-Problems

Who is online

Users browsing this forum: No registered users and 14 guests