2011-11-09 82 views
1

我有以下字符串:將字符串轉換成JSON在JavaScript

[{"EventType":1,"ParticipantId":"1","X":123,"Y":123},{"EventType":2,"ParticipantId":"1","ParrentList":[123,124,125,126],"X":0,"Y":0}] 

可能有人給我如何將其轉換成JSON結構,然後讓每個鍵的值的想法,說:

EventType = 1; 
ParticipantId = 1; 
X = 123; 
etc. 

實際上,我想如下做到這一點,但我不認爲這是這樣做的一個聰明的辦法:

var results = [{"EventType":1,"ParticipantId":"1","X":123,"Y":123},{"EventType":2,"ParticipantId":"1","ParrentList":[123,124,125,126],"X":0,"Y":0}]; 
    var arr = eval("(" + results + ')'); 

    for(var i=0;i<arr.length;i++){ 
     var obj = arr[i]; 
      for(var key in obj) { 
      var attrName = key; 
      var attrValue = obj[key]; 

       switch(attrName) { 
       case "EventType" : 
        EventType = attrValue; 
       break; 
       case "ParticipantId" : 
        ParticipantId = attrValue; 
       break; 
       case "X" : 
        xCoord = attrValue;   
       break; 
       case "Y" : 
        yCoord = attrValue; 
         break; 

       } 
        } 
        } 

謝謝。

+4

這已經是JSON ...我沒有得到你想做的事情:這段代碼從哪裏來的? – lonesomeday

+0

代碼實際上是從返回字符串的ASP.NET WebMethod返回的。如果我直接傳遞該字符串,沒有eval(),我將無法將其解析爲JSON對象。 – cycero

+0

所以它是通過AJAX檢索的,而不是通過Javascript中的簡單'var results ='賦值? – lonesomeday

回答

2

您已擁有一個Javascript對象。所以,你可能只是這樣做:

for(var i = 0; i < results.length; i++) { 
    var result = results[i]; 

    var eventType = result.EventType; 
    var participantId = result.ParticipantId; 
    var xCoord = result.X; 
    var yCoord = result.Y; 

    ... 
} 

沒有必要遍歷性,有肯定是沒有理由使用在這種情況下,無論是eval。 Javascript已經將你的變量識別爲一個對象。

現在,如果結果是一個實際的字符串,我建議使用JSON.parse(...)找回一個JavaScript對象:

var results = JSON.parse(jsonString); 
1

JSON.parse是你的朋友。

但是......我也很困惑。在你的示例中,你已經有了JSON。如果您需要將字符串轉換爲對象,則只需要解析它。

0

可能有人給我如何將其轉換成JSON結構,然後讓每個按鍵

的價值

1點一個想法:這是一個 JSON結構。 JSON是序列化數據以通過互聯網傳輸的一種符號(或用於其他存儲/傳輸目的,但這是重要的)。 JSON編碼的數據的一個字符串。總是。 JSON表示法與Javascript本身的對象符號非常相似(實際上,完全兼容)。

實際上想要做的就是將一串JSON編碼數據轉換爲一個Javascript對象。相關功能是JSON.parse

var data = JSON.parse(results); 

然後,您可以以正常方式訪問數據,例如, data[0].EventType將是1。我不確定「獲取每個鍵的值」是什麼意思,因爲數據是一組類似結構的對象,所以每個鍵有多個值。