将JSON转换为Array的好方法

时间:2015-06-01 19:39:26

标签: actionscript-3 flash actionscript

我正在尝试将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字符串转换为数组的帖子,但我已经尝试过它们,但仍然没有任何工作。

由于

2 个答案:

答案 0 :(得分:0)

您的json数据与尝试迭代它的方式有所不同。

你的数据是一个包含一个元素的数组,但是你试图迭代那个元素,就像它应该包含你的对象id:1,2,3等......当然它没有。

而是从json数据中删除包装器数组,或者如果你不想那么:

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

答案 1 :(得分: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);
}