在AS3中是否有可用于json或xml格式的流读取,解析库?我正在使用URLStream / URLRequest设置一个长轮询应用程序。除了格式之间的选择之外,我无法控制我收到的数据。我想要一个可以一次处理片段的解析器,这将允许我在某些完整片段可用时触发自定义事件。思考?当前的AIR应用程序正在做什么来处理这个问题?
示例API:
var decoder:StreamingJSONDecoder = new StreamingJSONDecoder();
decoder.attachEvent("onobjectavailable", read_object);
while (urlStream.bytesAvailable)
{
decoder.readBytes(get_bytes(urlStream));
}
答案 0 :(得分:1)
烨。
查看AS3 Corelib:http://code.google.com/p/as3corelib/
这是一个Adobe库。 labs.adobe.com上应该有更多信息。
我确实在日期格式上遇到了RSS解析器的问题,但除此之外,一切似乎都很好。
古德勒克!
答案 1 :(得分:1)
当前的AIR版本(v2.5)通过JSON.stringify()和JSON.parse()捆绑了一个具有本机JSON支持的较新WebKit。
答案 2 :(得分:0)
您可以使用URLStream实例逐步从远程网络下载数据,然后在有足够数据可用时解码JSON结果。
像这样的东西(没有经过测试,只是为了给你一个想法):
var stream:URLStream = new URLStream();
stream.addEventListener( ProgressEvent.PROGRESS, handleProgress );
stream.load( new URLRequest( "/path/to/data" ) );
function handleProgress( event:ProgressEvent ):void
{
// Attempt to read as much from the stream as we can at this point in time
while ( stream.bytesAvailable )
{
// Look for a JSONParseError if the JSON is not complete or not
// encoded correctly.
// Look for an EOFError is we can't read a UTF string completely
// from the stream.
try
{
var result:* = JSON.decode( stream.readUTF() );
// If we're here, we were able to read at least one decoded JSON object
// while handling this progress event
}
catch ( e:Error )
{
// Can't read, abort the while loop and try again next time we
// get download progress.
break;
}
}
}