JSON Simple java.lang.String不能强制转换为java.lang.Number



我正试图从我的json(作为Double(中获取LAT/LNG值,如下所示:

{
"placeNames": [
{
"name": "Test",
"lat": "0",
"lon": "0"
},
{
"name": "Üsküdar Bağlarbaşı Yolu",
"lat": "1",
"lon": "2"
},
{
"name": "Çamlıca",
"lat": "3",
"lon": "4"
}
]
}

并在谷歌地图上标记位置,如下所示:

JSONParser jsonParser = new JSONParser();
try {
JSONObject jsonObject = (JSONObject) jsonParser.parse(GetJson(getContext())); //TODO: READ JSON FILE
JSONArray lang = (JSONArray) jsonObject.get("placeNames");
for (int i = 0; i < lang.size(); i++) {
JSONObject explrObject = (JSONObject) lang.get(i);
String PlaceName = (String) explrObject.get("name");
MarkerOptions marker3 = new MarkerOptions();
Double LAT = ((Number) explrObject.get("lat")).doubleValue();
Double LNG = ((Number) explrObject.get("lon")).doubleValue();
marker3.position(new LatLng(LAT, LNG)).title(PlaceName);
}
}

我遇到的问题是,LNG/LAT值似乎是以字符串的形式出现的,尽管它们是我的JSON文件中的数字。请提供任何帮助。:(

也许你可以试试:

Double LAT = Double.parseDouble(explrObject.getString("lat"));

Double LAT = Double.parseDouble((String) explrObject.get("lat"));

以下是一个有效的JSON语法,具有double/ float值,您可以使用它将JSON构造为

{
"placeNames":[
{
"name":"Test",
"lat":29.470237,
"lon":107.722125
}
]
}

此外,如果有任何疑问,您可以参考此网站在线验证JSON语法。此外,您上面的JSON解析器逻辑将处理此JSON数据。

最新更新