ason


Fast Typed Actionscript JSON Parser

A fast non-strict (as in loose, not lazy) Flash JSON parser implementation. It takes advantage of the ArrayElementType metadata tag and the flash.utils.describeType method (calls to which are cached) to provide a typed parser, and uses Adobe Alchemy to ensure speed (at least twice as fast, but generally around four times the speed of as3corelib's implementation).

The interface closely follows as3corelib's, with some minor extensions:

com.rational.serialization.json.JSON.encode(o:*):String

delegates to the as3corelib implementation.

com.rational.serialization.json.JSON.decode(s:String, type:Class=null):*

will use an untyped version if the second argument is left off (or null) or a typed version if it is included. The typed version behaves in most cases as expected, and relies on the ArrayElementType tag to give the expected contents of an array property. If the first argument represents a top-level object, then the second argument defines the object's type. If the first argument represents a top-level array, then the second argument defines the array element type.

Speed differences for shallow objects between typed and untyped versions are relatively minimal (< 10%). Deep object structures may experience a greater difference.

To build the project from source, ensure the following are installed: * SCons * Adobe Flex * Adobe Alchemy * haXe (including the flash9.Memory class) * Flex (Fast Lexical Analyzer) * Bison

To build:

scons or scons --strict

This will produce a library json.swc.

scons --test or scons --test --strict

will produce an executable (./bson ?-f input? ?-o output?) for testing. It is best used by piping the output to hexdump -C.

scons --update

will sync the JSONEncoder and unit tests with the as3corelib repository.

Project Information

Labels:
actionscript as3 library api json parsing flex flash haxe alchemy