如何在Java中创建包含Javascript代码的JSONArray?

时间:2013-02-25 11:37:19

标签: java javascript json

我正在创建一个JSONArray并将其解析为String,但因为它甚至包含字符串而不是代码,所以它不会根据需要输出。

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 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

我有类似的问题,我的工作方式:

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

locations.put("%mapsPlaceholder1%");

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

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

类似的东西

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