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

Reply via email to