2014-12-04 101 views
0

大家好,我想问如何解析用org.json获取JSONArray值?用org.json无序结构解析JSONArray

这样

{ 
"features": [ 
    { 
    "geometry": { 
    "coordinates": [ 
     112.732816, 
     -7.246557 
    ], 
    "type": "Point" 
    }, 
    "type": "Feature", 
    "properties": { 
    "tinggi_tower": 80, 
    "nm_type": "SST (4 kaki)", 
    "site_id": "SBYPASTUR", 
    "nama_site": "Pasar Turi Utara", 
    "nm_kota": "Surabaya", 
    "nm_site_type": "GF", 
    "jml_tenant": 2 
    } 
} 
], 
"type": "FeatureCollection" 
} 

我要变得比我试图解析与库org.json这样

limap = new ArrayList<Site_Map_Client>(); 
JSONArray arrfeatures = json.getJSONArray("features"); 
    for (int i = 0; i < arrfeatures.length(); i++) { 
     Site_Map_Client modmap = new Site_Map_Client(); 
     JSONObject objfeatures = arrfeatures.getJSONObject(i); 
     JSONObject objgeo = objfeatures.getJSONObject("geometry"); 
     JSONArray arrcoord = objgeo.getJSONArray("coordinates"); 
      //how to get longtitude and latitude value for this loop 
      for (int j = 0; j < arrcoord.length(); j++) { 
       if(i == 0){ 
        modmap.setLongtitude(arrcoord.getDouble(i)); 
       } else if (i == 1) { 
        modmap.setLatitude(arrcoord.getDouble(i)); 
       } 
      } 
      JSONObject objprop = objfeatures.getJSONObject("properties"); 
      modmap.setSiteid(objprop.getString("site_id")); 
      modmap.setNmsite(objprop.getString("nama_site")); 
      modmap.setTipetower(objprop.getString("nm_type")); 
      modmap.setTipesite(objprop.getString("nm_site_type")); 
      modmap.setTinggitower(objprop.getDouble("tinggi_tower")); 
      modmap.setKota(objprop.getString("nm_kota")); 
      modmap.setJmtenant(objprop.getInt("jml_tenant")); 

      limap.add(modmap); 
     } 

问题langtitude和经度值我已经GeoJSON的数据就是为什么经度和langtitude结构混乱,我得到错误的坐标? 任何想法迭代JsonArray这个案例研究?

对不起我的英文不好,谢谢

回答

0

啊对不起,我错了,找了循环

的迭代必须是这样的

for (int j = 0; j < arrcoord.length(); j++) { 
      if(j == 0){ 
       modmap.setLongtitude(arrcoord.getDouble(j)); 
      } else if (j == 1) { 
       modmap.setLatitude(arrcoord.getDouble(j)); 
      } 
     } 

,现在得到了解决

0

你内在的循环应该看起来像这样

for (int j = 0; j < arrcoord.length(); j++) { 
     if(j == 0){ 
     modmap.setLongtitude(arrcoord.getDouble(i)); 
     } else if (j == 1) { 
     modmap.setLatitude(arrcoord.getDouble(i)); 
     } 
} 

在if语句中使用j变量而不是i

+0

是啊我错了看变量,谢谢 – jboxxpradhana 2014-12-04 19:04:11