2013-02-25 67 views
3

我正在创建一个JSONArray并将其解析为一个字符串,但因为它甚至包含字符串而不是代码,所以它不会输出,因为我需要它。如何在Java中创建一个包含Javascript代码的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被正确解释。

+2

和'[新google.maps.LatLng(53.5608 ,9.96357),新的google.maps.LatLng(53.5608,9.96357)]将会是JSON内部的一个字符串吗?因为如果没有,那么它是无效的JSON。 – 2013-02-25 11:40:08

+0

JSON数据结构中没有代码,这种格式根本不支持。 – Henry 2013-02-25 11:41:10

+0

好的,我明白了。谢谢! – Lester 2013-02-25 11:43:31

回答

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); 
} 
+0

听起来真的很聪明。在源代码中,数组显示为'var places = [{“lng”:9.963569641113281,“lat”:53.56079864501953},{“lng”:9.979949951171875,“lat”:53.55149841308594}];'但是当我提醒地方)'它是空的。我可能错过了什么? – Lester 2013-02-25 12:25:59

+0

@Lester:没有足够的信息来回答这个问题。也许你打电话给'alert(places)',其中'places'不可见。请注意,如果你得到输出'[object Object],[object Object]',那就完全正常了。 – 2013-02-25 12:29:35

+0

现在它完美的工作。也许只是一些浏览器缓存问题。 :) 非常感谢所有答复! – Lester 2013-02-25 14:57:30

0

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

,而不是写JSON转换之前的JavaScript,插入一个占位符。

locations.put("%mapsPlaceholder1%"); 

然后填充占位符阵,后做:

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

类似的东西

,你也可以只创建一个数组串手动

+0

是的,这是一个不错的方法。我只是想不出一个办法来为整个List“places”做这件事。 – Lester 2013-02-25 11:52:03

+0

我认为你的问题实际上更好的方法是: 只需将坐标添加到数组中,然后通过遍历数组 – x4rf41 2013-02-25 11:53:02

+0

来创建javascript中的google.maps.LatLng对象,听起来像是一个很好的计划b。谢谢! – Lester 2013-02-25 12:00:26

0

你也可以使用正则表达式删除“,如果你解析JSON到另一种语言

1

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

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

相关问题