首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JSONArray无序结构解析org.json

用JSONArray无序结构解析org.json
EN

Stack Overflow用户
提问于 2014-12-04 18:48:05
回答 2查看 206关注 0票数 0

你好,我想问的是,如何用org.json解析获取org.json值?

我有这样的geojson数据

代码语言:javascript
复制
{
"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来解析

代码语言:javascript
复制
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);
        }

问题是,为什么长期和语言的结构是无序的,而我的坐标是错误的?对于这个案例研究迭代JsonArray有什么想法吗?

抱歉,我的英语不好,谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-04 18:59:13

啊,对不起,我看错了

迭代必须是这样的

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-12-04 19:00:18

您的内部for循环应该如下所示

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27301648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档