[cl-json-devel] Newbie to Lisp question, trying to create JSON
Henrik Hjelte
henrik at evahjelte.com
Thu Apr 7 20:39:20 UTC 2011
On Thu, Apr 7, 2011 at 4:07 PM, Jim Barrows <jim.barrows at gmail.com> wrote:
> I'm trying to encode a list of plists, and encode-json-plist-to-string
> doesn't appear to do it.
Yes, because the first list is a list and not a plist.
> My newbiness is not seeing a better answer then to loop through the list,
> and encode each plist separately, concatentate the strings together to form
> the array.
>
If you go that route, I would rather wrap a string-stream with
with-output-to-string and encode each individual plist to this stream (not
the -to-string functions) to avoid string concatenation at the end.
> That doesn't seem too lispy to me.
> Is there a better way?
>
I suggest using the explicit encoder for more control, but then you would
need to change your p-lists slightly.
I assume you want the plists to be json objects, and the list to be a json
array.
Both these examples give the same result:
[{"a":"c","d":"c"},{"foo":true,"bar":false}
;; More json-javascriptish terminolgy
(princ
(json:with-explicit-encoder
(json:encode-json-to-string
'(:array (:object :a "c" :d "c")
(:object :foo t :bar (:false))))))
;; More lispish terminology
(princ
(json:with-explicit-encoder
(json:encode-json-to-string
'(:list (:plist :a "c" :d "c")
(:plist :foo t :bar (:false))))))
Or you could use the streaming encoder.
/Henrik Hjelte
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cl-json-devel/attachments/20110407/8384c33e/attachment.html>
More information about the cl-json-devel
mailing list