<div dir="ltr"><div><br></div><div style>Hi All,</div><div style><br></div><div style>Sorry if this has been covered, I am a bit late to the party on the mailing list here... anyway: is there a conventional way to achieve round-tripping of e.g. plists with cl-json? For example:</div>
<div style><br></div><div style><div>CL-USER> (setq obj (list :|iid| NIL :|bashee| (list :|%rp%| NIL)))</div><div>(:|iid| NIL :|bashee| (:|%rp%| NIL))</div><div>CL-USER> (json:encode-json-to-string obj)</div><div>"[\"iid\",null,\"bashee\",[\"%rp%\",null]]"</div>
<div>CL-USER> (json:decode-json-from-string (json:encode-json-to-string obj))</div><div>("iid" NIL "bashee" ("%rp%" NIL))</div><div><br></div><div><br></div><div>At the end here, what I really want is the identical plist back:<br>
</div></div><div style><div style><br></div><div style> (:|iid| NIL :|bashee| (:|%rp%| NIL))</div><div style><br></div><div style>The CL-JSON documentation is clear that symbols in Lisp go to strings in JSON, which come back as strings in Lisp --- but is there any general, conventional technique people are using on top of this to preserve printable Lisp objects (mainly I'm talking about symbols here) through round-trips Lisp->JSON->Lisp? </div>
<div style><br></div><div style>Up until now we have been using base64 encoding for this kind of thing:</div><div style><br></div><div style>  (base64-encode (format nil "~s" obj))</div><div style><br></div><div style>
to get the Lisp stuff into a format for the web page which can be passed through e.g. as the parameter for an Ajax call, then </div><div style><br></div><div style>   (read-from-string (base64-decode ...))</div><div style>
<br></div><div style>back in Lisp to get it back and usable in Lisp. Putting everything into a base64 encoded string avoids problems with having to escape characters or other weirdness caused by strange characters which can confuse JavaScript.  But this gets to be kind of cryptic (it makes the web page source code pretty much unreadable for humans),  and I am learning that it starts failing for UTF-8 characters, etc, unless we are very careful about our base64 encoding. So I am hoping to standardize on JSON for this kind of thing, if there is a generally accepted way to do round-tripping. </div>
<div style><br></div><div style>Plus I want to use json for scraping specific form-control values from a web page through Ajax (right now we have god-awful Javascript with all kinds of crazy character-escaping workarounds to do this). But I think that is another topic...</div>
<div style><br></div><div style>Anyway am I barking up the wrong tree here trying to get round-tripping with cl-json? <br></div><div style><br></div><div style>Regards,</div><div style><br></div><div style> Dave</div><div style>
<br></div><div style><br></div><div><br></div></div><br clear="all"><div><br></div>-- <br>My Best,<br><br>Dave Cooper, Genworks Support<br><a href="mailto:david.cooper@genworks.com">david.cooper@genworks.com</a>, <a href="http://dave.genworks.com">dave.genworks.com</a>(skype)<br>
USA: 248-327-3253(o), 1-248-330-2979(mobile)<br>UK: 0191 645 1699<br>
</div>