用于AS3 / Flex / Adob​​e AIR应用程序的流解析器(JSON / XML)

时间:2009-05-15 16:57:27

标签: xml actionscript-3 json parsing air

在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)); 
}

3 个答案:

答案 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;
        }
    }   
}