JSON-简单 java.lang.String 无法转换为 java.lang.Number
JSON-Simple java.lang.String cannot be cast to java.lang.Number
我正在尝试从此处看到的 json(作为双精度)获取 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"
}
]
}
并在此处看到的 google 地图中的位置放置标记:
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"));
以下是具有 double/ float
值的有效 JSON 语法,您可以使用这些值将 json 构造为,
{
"placeNames":[
{
"name":"Test",
"lat":29.470237,
"lon":107.722125
}
]
}
此外,如果有任何疑问,您可以参考此 website 在线验证您的 JSON 语法。而且,您上面的 JSON 解析器逻辑将处理此 JSON 数据。
我正在尝试从此处看到的 json(作为双精度)获取 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"
}
]
}
并在此处看到的 google 地图中的位置放置标记:
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"));
以下是具有 double/ float
值的有效 JSON 语法,您可以使用这些值将 json 构造为,
{
"placeNames":[
{
"name":"Test",
"lat":29.470237,
"lon":107.722125
}
]
}
此外,如果有任何疑问,您可以参考此 website 在线验证您的 JSON 语法。而且,您上面的 JSON 解析器逻辑将处理此 JSON 数据。