2013-02-25 68 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()

相關問題