【发布时间】:2015-06-01 19:39:25
【问题描述】:
我正在尝试将 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 字符串转换为数组的帖子,但我都试过了,但仍然没有任何效果。
谢谢
【问题讨论】:
-
解码时已经有了数组。
var jsonData:Object = JSON.decode(ret.data)所以如果你做了trace(jsonData is Array)你会得到真实的。所以你可以通过jsonData[0].id等来访问你的对象。 -
另外,您可以只使用内置的顶级 JSON 函数 -
JSON.parse(ret.data); -
@LDMS 奇怪的是,当我用
trace(jsonData is Array)检查我的 jsonData 时我得到了错误是我的 json 字符串错误吗? -
不,我只是按照发布的方式进行了尝试,结果为真(作为数组)。尝试尝试
ret.data看看你得到了什么,也许问题就在那里。另外,你改用JSON.parse了吗(去掉所有对as3corelib的JSON的引用) -
as3corelib JSON 类的性能不如原生类,你一定要切换。
标签: actionscript-3 flash actionscript