[fpc-pascal] JSON - RTTI streaming.
Lee Jenkins
lee at datatrakpos.com
Tue May 17 16:53:02 CEST 2011
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
More information about the fpc-pascal
mailing list