[Cl-perec-devel] JSON serialization
Mihai Bazon
mihai at bazon.net
Sat Sep 19 12:11:43 UTC 2009
(declare (ignorable (last-email-from 'mishoo))) ;-)
My mistake, it's doable without touching perec... I should take more
MOP for breakfast before posting to the list.
Cheers,
-Mihai
Mihai Bazon <mihai at bazon.net> wrote:
> Hi folks,
>
> I'm trying to use a custom keyword in slot definitions (:serializable)
> that would let a base class know whether that slot is supposed to be
> serialized in JSON (to implement a generic way to JSONize perec
> objects).
>
> Defclass-star allows arbitrary keywords, but the problem is that when
> defassociation is called, the values of :serializable passed in class
> definition are lost. What happens, I think, is that the class gets
> redefined but the system uses only slot keywords declared in
> persistent-slot-definition and subclasses.
>
> Talked to some folks on the IRC, the general opinion is to modify
> cl-perec, but I don't like to use modified versions of libraries I
> didn't wrote :). So my question is, if I implement generic support for
> encode-json in cl-perec, would it be acceptable to include the patch in
> the official repository? This support would mean the following:
>
> * keyword :serializable (or :json?) supported in slot definitions with
> one of the following values: :always (default), :light, :heavy,
> :never
>
> * (encode-json persistent-object stream) will write a JSON
> representation of the object that includes :always and :light slots
> (and the OID)
>
> * (let ((prc::*full-json* t)) (encode-json object stream)) will include
> the :heavy slots as well
>
> * associations will be serialized as OID (for 1-1) or [ OID, OID ... ]
> (for 1-n, m-n)
>
> All of the above is pretty easy to do without touching perec, but I just
> miss the :serializable keyword support. (or maybe I just don't know
> enough Lisp and there's an easy way around it? I did investigate
> creating my own metaclass and slot definition classes, but concluded
> that it's too much boilerplate code for such simple functionality)
>
> Cheers,
> -Mihai
> _______________________________________________
> Cl-perec-devel mailing list
> Cl-perec-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/cl-perec-devel
More information about the cl-perec-devel
mailing list