3

JSONArray を作成し、それを文字列に解析していますが、コードの代わりに文字列が含まれているため、必要に応じて出力されません。

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

次のように出力されますが、JavaScriptによって正しく解釈される["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)]

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 は、plain-old-data のみをサポートします。実行可能コード (a は実行可能コード) を含めることはできませんnew。これは仕様によるものです。JSON に実行可能コードを含めることができる場合、信頼できないソースから JSON をインポートする場合は、より慎重に行う必要があります。

できることは、JavaScript コードを文字列として渡しeval()、JSON を解析した後に 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 に答える