将JSON对象字符串转换为整数

时间:2017-06-23 16:54:37

标签: android arrays json

我想将纬度的字符串值更改为我想在地图位置确定中使用的整数。 我的代码如下:

try {
        JSONObject jsonObj = new JSONObject(myJSON);
        peoples = jsonObj.getJSONArray(TAG_RESULTS);

        for(int i=0;i<peoples.length();i++){
            JSONObject c = peoples.getJSONObject(i);
            String timedate = c.getString(TAG_TIMEDATE);
            String binno = c.getString(TAG_BINNO);
            String data1 = c.getString(TAG_DATA1);
            String data2 = c.getString(TAG_DATA2);
            String data3 = c.getString(TAG_DATA3);
            String averagedata = c.getString(TAG_AVERAGEDATA);
            String latitude = c.getString(TAG_LATITUDE);
            String longitude = c.getString(TAG_LONGITUDE);

            HashMap<String,String> trashcan = new HashMap<String,String>();
            trashcan.put(TAG_TIMEDATE,timedate);
            trashcan.put(TAG_BINNO,binno);
            trashcan.put(TAG_DATA1,data1);
            trashcan.put(TAG_DATA2,data2);
            trashcan.put(TAG_DATA3,data3);
            trashcan.put(TAG_AVERAGEDATA,averagedata);
            trashcan.put(TAG_LATITUDE,latitude);
            trashcan.put(TAG_LONGITUDE,longitude);

            trashcanList.add(trashcan);
        }

        ListAdapter adapter = new SimpleAdapter(
                MapsActivity.this, trashcanList, R.layout.list_item,
                new String[]{TAG_TIMEDATE,TAG_BINNO,TAG_DATA1,TAG_DATA2,TAG_DATA3,TAG_AVERAGEDATA,TAG_LATITUDE,TAG_LONGITUDE},
                new int[]{R.id.timedate,R.id.binno, R.id.data1,R.id.data2,R.id.data3,R.id.averagedata, R.id.latitude, R.id.longitude}
        );

        list.setAdapter(adapter);

    } catch (JSONException e) {
        e.printStackTrace();
    }

我尝试了以下解决方案,但纬度值每次都为零。

int latitude1 = jsonObj.getInt("Latitude");

1 个答案:

答案 0 :(得分:0)

Lat和Lng的值应该类似于

  • &#34; LAT&#34; :22.3361462197085,
  • &#34; LNG&#34; :114.1725279197085

您不能将它们放在原始int或Integer中。您可能想要使用其他数据类型,如

    String myJSON = "{\"lat\":\"22.3361462197085\",\"lng\":\"114.1725279197085\"}";

    try {
        JSONObject jsonObj = new JSONObject(myJSON);

        BigDecimal lat = jsonObj.getBigDecimal("lat");
        BigDecimal lng = jsonObj.getBigDecimal("lng");

        System.out.println(lat);
        System.out.println(lng);

    } catch (JSONException e) {
        e.printStackTrace();
    }

如果找不到getBigDecimal()方法,请尝试使用getDouble(String name)或getLong(String name)。