2009-05-15 6 views
3

Existe-t-il des bibliothèques d'analyse de lecture de flux disponibles pour les formats json ou xml dans AS3? Je configure une application à interrogation longue en utilisant URLStream/URLRequest. Je n'ai aucun contrôle sur les données que je reçois, à part le choix entre les formats. Je voudrais avoir un analyseur qui peut gérer des fragments à la fois, ce qui me permettrait de déclencher des événements personnalisés lorsque certains fragments complets deviennent disponibles. Pensées? Que font les applications AIR actuelles pour gérer cela?Analyseurs de diffusion en continu (JSON/XML) pour l'application AS3/Flex/Adobe AIR

API Exemple:

var decoder:StreamingJSONDecoder = new StreamingJSONDecoder(); 
decoder.attachEvent("onobjectavailable", read_object); 

while (urlStream.bytesAvailable) 
{ 
    decoder.readBytes(get_bytes(urlStream)); 
} 

Répondre

1

Eh oui.

Jetez un oeil à l'AS3 corelib: http://code.google.com/p/as3corelib/

Il est une bibliothèque Adobe. Il devrait y avoir plus d'informations sur labs.adobe.com.

J'ai eu un problème avec l'analyseur RSS sur le format de date, mais à part ça, tout semblait bien.

Goodluck!

+0

Corrigez-moi si je me trompe, mais je ne pense pas que les API fournies par as3corelib supportent le streaming. J'ai ajouté un exemple de code à ma question initiale pour clarifier. –

+0

Désolé ... je n'ai pas bien lu la question. Les derniers détails sur la bibliothèque JSON as3 que j'ai lus étaient ici: http: //www.darronschall.com/weblog/2008/12/as3-json-library-now-a-little-less-strict.cfm. Je ne peux pas aider beaucoup si :( –

0

Vous pouvez potentiellement utiliser une instance URLStream pour télécharger progressivement les données d'un réseau distant, puis décoder le résultat JSON lorsque suffisamment de données sont disponibles.

Quelque chose comme ça (non testé, juste pour vous donner une idée):

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; 
     } 
    } 
} 
1

La version actuelle de l'air (v2.5) regroupe une version plus récente de WebKit qui a un support natif de JSON, par l'intermédiaire JSON.stringify () et JSON.parse().