![](https://secure.gravatar.com/avatar/0e09199db7a282ecc886621eae4ae606.jpg?s=120&d=mm&r=g)
On Thu, Apr 7, 2011 at 4:07 PM, Jim Barrows <jim.barrows@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