3

我正在创建一个 JSONArray 并将其解析为字符串,但由于它甚至包含字符串而不是代码,因此它不会按我的需要输出。

for(Place place: places){
    locations.put("new google.maps.LatLng("+place.getContactData().getLatitude()+","+place.getContactData().getLongitude()+")");
}
return locations.toString();

它输出为:["new google.maps.LatLng(53.5608,9.96357)","new google.maps.LatLng(53.5608,9.96357)"]但我需要它不带引号,[new google.maps.LatLng(53.5608,9.96357),new google.maps.LatLng(53.5608,9.96357)]以便被javascript正确解释。

4

4 回答 4

2

另一种方法是:

创建一个只有坐标的数组:

for(Place place: places){
    JSONObject obj = new JSONObject();
    obj.put("lat",place.getContactData().getLatitude());
    obj.put("lng",place.getContactData().getLongitude());
    locations.put(obj);
}

然后在javascript中:

var places = (yourPlacesJson);
var placeObjects = [];

for(var i=0;i<places.length;i++)
{
    placeObjects[placeObjects.length] = new google.maps.LatLng(places[i].lat,places[i].lng);
}
于 2013-02-25T12:01:49.900 回答
1

JSON 仅支持普通旧数据。它不能包含任何可执行代码(anew是可执行代码)。这是设计使然 - 当 JSON 能够包含可执行代码时,您必须更加小心地从不受信任的来源导入 JSON。

您所能做的就是eval()在解析 JSON 后将 javascript 代码作为字符串传递并在 JS 端传递。

于 2013-02-25T11:58:49.237 回答
0

如果您将json解析为另一种语言,您也可以使用正则表达式删除“

于 2013-02-25T11:51:01.160 回答
-1

我有一个类似的问题,我做这项工作的方式:

而不是在 json 转换之前编写 javascript,而是插入一个占位符。

locations.put("%mapsPlaceholder1%");

然后在用占位符填充数组后,执行:

locations.toString().replaceFirst("\"%mapsPlaceholder1%\"","yourJsCode");

类似的东西

您也可以手动创建数组字符串

于 2013-02-25T11:43:15.117 回答