2015-06-01 97 views
0

我試圖JSON響應轉換成數組中的動作腳本3到JSON轉換成數組

好方法這是我的JSON響應:

[{ 
    "id": 1, 
    "klistid": 8017, 
    "name": "List item name", 
    "description": "List item description", 
    "type": 1, 
    "offset": 300, 
    "req": "gfi" 
}, 
{ 
    "id": 2, 
    "klistid": 8018, 
    "name": "List item name", 
    "description": "List item description", 
    "type": 1, 
    "offset": 600, 
    "req": "gfi" 
}, 
{ 
    "id": 3, 
    "klistid": 8019, 
    "name": "List item name", 
    "description": "List item description", 
    "type": 1, 
    "offset": 900, 
    "req": "gfi" 
}] 

,這是我的AC3編碼:

function GetLists() 
    { 
    var req:URLRequest = new URLRequest("http://localhost:51318/api/List/1"); 
    var ret:URLLoader = new URLLoader(); 
    ret.addEventListener(Event.COMPLETE,function(e:Event) 
    { 
     var jsonData:Object = JSON.decode(ret.data); 
     for (var i:String in jsonData) 
     { 
     trace(i + ": " + jsonData[i]); 
     } 
    }); 
    ret.load(req); 
    } 

我把這個函數分配給一個按鈕,但是每當我點擊那個按鈕什麼都不會發生。當它進入for循環代碼時,我會在ac3代碼中放入痕跡,只是停下來,什麼也不做。我只是想將這個json字符串轉換爲數組或列表來遍歷它。我已經看到一些關於將JSON字符串轉換爲數組的帖子,但我已經嘗試過,但仍然沒有任何工作。

感謝

+0

解碼時已經有陣列了。 'var jsonData:Object = JSON.decode(ret.data)'所以如果你做了trace(jsonData是Array)'你就會變成真的。所以你可以通過執行'jsonData [0] .id'來訪問你的對象等。 – BadFeelingAboutThis

+0

另外,你可以使用內置的頂層JSON函數 - 也就是'JSON.parse(ret.data)'; – BadFeelingAboutThis

+0

@LDMS奇怪的是,當我用'trace(jsonData是數組)檢查我的jsonData時,我得到了錯誤'是我的json字符串錯誤? –

回答

0

有你的JSON數據並試圖在迭代的方式之間的差異。

你的數據是一個有一個元素的數組,但你嘗試迭代一個元素,就像它應該包含你的對象id:1,2,3等...當然,它不。

,而不是從你的JSON數據刪除陣列封裝,或者如果你不想那麼:

var data:Object = jsonData[0]; 
for (var i:String in data) 
{ 
    trace(i) 
} 
0

所有你需要做的就是投你的解碼後的數據作爲Array

function GetLists() 
{ 
    var req:URLRequest = new URLRequest("http://localhost:51318/api/List/1"); 
    var ret:URLLoader = new URLLoader(); 
    ret.addEventListener(Event.COMPLETE,function(e:Event) 
    { 
     var jsonData:Array = JSON.decode(ret.data) as Array; 
     for each(var obj:Object in jsonData) 
     { 
      trace(obj["id"] + ": " + obj["description"]); 
     } 
    } 
    ret.load(req); 
}