簡體   English   中英

將JSON轉換為數組的好方法

[英]Good way to convert JSON to Array

我正在嘗試將JSON響應轉換為動作腳本3中的數組。

這是我的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字符串轉換為數組的文章,但是我已經嘗試了所有這些文章,但仍無濟於事。

謝謝

您的json數據和嘗試對其進行迭代的方式有所不同。

您的數據是一個包含一個元素的數組,但是您嘗試對一個元素進行迭代,例如它應該包含對象id:1、2、3等……當然不是。

而是從json數據中刪除包裝器數組,或者如果您不想這樣做,則:

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

您要做的就是將解碼后的數據轉換為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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM