我正在尝试从deviantArt网站解码json对象,json对象就像跟随
{
"version": "1.0",
"type": "photo",
"title": "Cope",
"url": "http://fc04.deviantart.net/fs50/f/2009/336/4/7/Cope_by_pachunka.jpg",
"author_name": "pachunka",
"author_url": "http://pachunka.deviantart.com",
"provider_name": "deviantART",
"provider_url": "http://www.deviantart.com",
"thumbnail_url": "http://th03.deviantart.net/fs50/300W/f/2009/336/4/7/Cope_by_pachunka.jpg",
"thumbnail_width": 300,
"thumbnail_height": 450,
"width": 448,
"height": 672
}
我的代码就像这样
import flash.net.URLRequest;
import flash.events.Event;
import com.adobe.serialization.json.*;
var ldr = new URLLoader();
ldr.addEventListener(Event.COMPLETE, onload);
ldr.load(ureq);
var ureq:URLRequest = new URLRequest("http://backend.deviantart.com/oembed? url=http%3A%2F%2Ffav.me%2Fd2enxz7");
function onload(evt:Event):void
{
var myData:Object = JSON.decode(ldr.data);
trace(myData.title);
}
当我运行它时会出错 通过静态类型Class
的引用调用可能未定义的方法解码答案 0 :(得分:1)
在尝试使用ldr加载之前,必须减速ureq;) 并使用本机顶级JSON解析器类
import flash.net.URLRequest;
import flash.events.Event;
var ldr = new URLLoader();
ldr.addEventListener(Event.COMPLETE, onload);
var ureq: URLRequest = new URLRequest("http://backend.deviantart.com/oembed?url=http%3A%2F%2Ffav.me%2Fd2enxz7");
ldr.load(ureq);
function onload(event: Event): void {
var myData: Object = JSON.parse(event.target.data);
for (var key: String in myData)
trace(key + ":" + myData[key]);
}
答案 1 :(得分:1)
我猜您使用的是Flash Pro CS 6.0,我在Flash CS 6.0中遇到了同样的问题,但在旧版本中却没有。
似乎Adobe已将项目as3corelib
的代码集成到他们的Flash IDE中。导入的JSON
类被Flash Pro CS6中的集成版本覆盖,后者没有decode
方法,因此您收到了错误。
您可以通过使用完整类引用调用decode方法来验证:
var myData:Object = com.adobe.serialization.json.JSON.decode(ldr.data);
你应该得到一个错误:1000: Ambiguous reference to JSON
。这意味着有两个com.adobe.serialization.json.JSON
副本加载到当前编译环境中。
答案 2 :(得分:-1)
在第一个源代码的帮助下,在parse()
语句中使用decode
代替var myData:Object = JSON.decode(ldr.data);
。这样做会更好。