On 1/5/2011 6:12 PM, Michael Van Canneyt wrote:
Hello,
For those of you that need JSON support:
I have committed support for streaming published properties (properties for
which RTTI is generated) from objects to JSON and vice versa, in a unit
fpjsonrtti.
Not the full streaming as implemented in the classes system is supported:
- No DefineProperties.
- No methods.
Although it should not be difficult to add support for this.
In contrast, it can stream simple collections and stringlists (with ojects
attached) in various ways.
There are various events to influence the streaming process.
This should be more than enough to stream objects to and from a web-browser.
I have committed an example and a testsuite.
All this is in packages/fcl-json.
Despite the fact that the testsuite runs OK , I'd like to ask those for whom it
might be useful to test the code and report any errors you find to me.
Suggestions for improvements are also welcome.
Cool stuff, Michael.
One thought. What do you think about a base abstract "TObjectStreamer" or
similar object that provides methods that all such helpers could inherit from?
Like:
TObejctStreamer = class(TObject)
Public
function ToString: string; virtual; abstract;
function ToStream(AStream: TStream): integer; virtual; abstract;
function FromString(const AString: string): TObject; virtual; abstract;
function FromStream(AStream: TStream): TObject; virtual; abstract;
end;
No sooner will you have started using a json object streamer in your project
when the need for a xml or yaml format is required! This could allow to swap
out different implementations and promote decoupling.
BTW, do you ever sleep?
--
Warm Regards,
Lee
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal