我正在创建一个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正确解释。
答案 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");
类似的东西
您也可以手动创建数组字符串