2012-05-28 49 views
0

我得到無效標籤錯誤「firstname」:「John2」,。 我把我的JSON數據放在括號中,爲什麼我仍然得到這個錯誤? 我仍然缺乏一些東西,所以代碼將它與java腳本標籤混淆?無效標籤json標籤vs javascript標籤

<script type="text/javascript"> 
     var data = "(" + { 
    "firstname": "John1", 
    "lastname": "Doe", 
    "location": { 
    "latitude": "48.4048403957642", 
    "longitude": "2.68452644348145" 
    } 
} 
{ 
    "firstname": "John2", 
    "lastname": "Doe", 
    "location": { 
    "latitude": "48.4050236871384", 
    "longitude": "2.68512690051361" 
    } 
} 
{ 
    "firstname": "John3", 
    "lastname": "Doe", 
    "location": { 
    "latitude": "48.4048403957642", 
    "longitude": "2.68452644348145" 
    } 
} 
+ ")" ; 

     function initialize() { 
     var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453); 

     var map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 3, 
      center: center, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }); 

     var markers = []; 
     for (var i = 0; i < data.length; i++) { 
      var location = data[i]; 
      var latLng = new google.maps.LatLng(location.latitude, 
       location.longitude); 
      var marker = new google.maps.Marker({ 
      position: latLng 
      }); 
      markers.push(marker); 
     } 
     var markerCluster = new MarkerClusterer(map, markers); 
     } 
     google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
+0

看到這篇文章[文章](http://www.alsacreations.com/artic le/lire/1161-json-ajax-jquery-jsonp-getjson.html)關於jquery json的使用和我與'quentin'的回答 –

回答

0

你有兩個問題(我可以發現)。

首先,您使用的是JavaScript,而不是JSON。你有一個對象文字。

完全擺脫"("")"。如果您試圖使用eval來解析JSON,則會使用這些。您沒有JSON,如果您確實需要使用JSON對象(及其parse方法),而不是eval。目前,您正在嘗試將對象串聯起來(這會給你諸如"([Object object])"之類的東西,根本沒有任何用處)。

其次,您似乎嘗試使用一組對象,但您剛剛將它們放在一個接一個的位置。

用數組字面值[]包裝對象。

用逗號分隔數組中的項目(,)。

錯誤消息的原因是,你已經創建了這樣一個奇怪的解析狀態,你試圖在JS引擎的東西label a loop

+0

我理解你的觀點,但我只是試圖讓google地圖像這裏一樣工作這是他們如何做到的? http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/examples/simple_example.html – Efe

+0

爲什麼「但」?如果你瞭解我的觀點,然後修正你的代碼。 – Quentin

-1

使用JSON生成函數不是更容易嗎?例如:

function array2json(arr) { 
var parts = []; 
var is_list = (Object.prototype.toString.apply(arr) === '[object Array]'); 

for (var key in arr) { 
    var value = arr[key]; 
    if(typeof value == "object") { //Custom handling for arrays 
     if(is_list) parts.push(array2json(value)); /* :RECURSION: */ 
     else parts[key] = array2json(value); /* :RECURSION: */ 
    } else { 
     var str = ""; 
     if(!is_list) str = '"' + key + '":'; 

     //Custom handling for multiple data types 
     if(typeof value == "number") str += value; //Numbers 
     else if(value === false) str += 'false'; //The booleans 
     else if(value === true) str += 'true'; 
     else str += '"' + value + '"'; //All other things 
     // :TODO: Is there any more datatype we should be in the lookout for? (Functions?) 

     parts.push(str); 
    } 
} 
var json = parts.join(","); 

if(is_list) return '[' + json + ']';//Return numerical JSON 
return '{' + json + '}';//Return associative JSON 
} 

旁註:我沒有做這個代碼自己,但它是非常有用!)

可以使用使JSON數據:

myJSON = array2json(['any data', {'even objects': 'can go in here'}); 

,你可以獲得陣列回來使用:

var myArray = eval('(' + myJSON + ')'); 
+0

由於對象是循環遍歷同一腳本中的數據結構,所以不,創建JSON對象根本不會有用。 – Quentin

+0

'var myArray = eval('('+ myJSON +')');'?在2012年?這是**糟糕的**建議。正如使用一些複製/粘貼JS來創建JSON,而不是使用本機JSON對象(具有一個標準的,有詳細記錄的庫,具有已知的錯誤報告位置,例如json2.js) – Quentin

+0

我不想在這裏生成Json數據。我想使用已經創建的json數據中的數據。 – Efe