2012-07-27 32 views
0

我想從我的服務器返回一個字符串,將被解析成一個javascript對象。當談到解析過程時,我總是收到錯誤。我不知道爲什麼。也許你知道我沒有的東西。試圖做JSON.parse,但它不喜歡我正在從我的服務器返回的字符串做什麼

我的字符串如下所示:

{{"fname":"bob","lname":"jones"},{...}} 

什麼,我試圖做的是一樣的東西

var item = JSON.parse(myString); 

應該做項目,名稱的數組,所以我可以這樣做:

for(var i = 0; i < item.length; i++){ 
    alert(item[i].fname + " " + item[i].lname); 
} 

有什麼我做錯了嗎?以上是一個樣本,但下面其實是代碼片段:

while (reader.Read()) 
{ 
    if (reader["rt_id"] != DBNull.Value && reader["rt_name"] != DBNull.Value) 
    { 
      t = @"{""pValue"":""{ReportType},"+reader["rt_id"][email protected]""",""pText"":"""+reader["rt_name"][email protected]"""}"; 
      returnContentsArray.Add(t); 
    } 
} 
returnContents = "{" + String.Join(",",returnContentsArray.ToArray()) + "}"; 
return returnContents; 

客戶端:

var item = JSON.parse(result); 
+3

您應該使用真正的JSON序列化程序。 – SLaks 2012-07-27 20:06:58

回答

1

該字符串不是有效的JSON。 {}代表一個對象,它需要有鍵。看來你想要一個數組,用[]來代替。

returnContents = "[" + String.Join(",",returnContentsArray.ToArray()) + "]"; 
+0

啊,好的。出於某種原因,我認爲「{」正在定義像var x = {「a」,「b」,「c」}這樣的集合,就像大多數其他語言一樣。謝謝(你的)信息! – Fallenreaper 2012-07-27 20:12:38

+1

@Fallenreaper:不客氣:-)是的,JavaScript與其他語言不同:-P – 2012-07-27 20:13:54

1

您需要使用正確的JSON格式。它看起來像你應該使用的格式是

[{"fname":"bob","lname":"jones"},{...}] 

這將返回一個對象數組。只需讓用戶在嘗試更改JavaScript代碼之前就可以驗證類似JSONLint中的JSON。

相關問題