Ok, so I fixed the problem by changing A) to B)
A) (*defn *print-json ... (*write-json* x **out** escape-unicode))) to B) (*defn *print-json ... (*write-json* *(PrintWriter. *out*)* escape-unicode))) The only thing now, is that the 'nil' return value suffixes itself. I can find out where that is. But I think this this could be fixed easily enough. If you like, I can do this locally and, I guessing, submit a github pull request. user => (clojure.data.json/print-json "tim") "tim"nil user=> (clojure.data.json/print-json [1 2 3]) [1,2,3]nil user => (clojure.data.json/print-json { :a { :aa "b" } } ) {"a":{"aa":"b"}}nil Tim On Tue, Jun 28, 2011 at 8:59 PM, Timothy Washington <twash...@gmail.com>wrote: > I'm trying to do a simple print-json, and am getting a ClassCastException > in the data.json library. I'm using [org.clojure/clojure "1.3.0-beta1"] and > [org.clojure/data.json "0.1.0"]. So… > > > *> lein repl * > > *…* > > *user => (require 'clojure.data.json)* > > *nil * > > * > * > > *user => (clojure.data.json/print-json "tim")* > > *ClassCastException java.io.OutputStreamWriter cannot be cast to > java.io.PrintWriter clojure.data.json/write-json-string (json.clj:229)* > > * > * > > *user=> (clojure.data.json/print-json [1 2 3]) * > > *ClassCastException java.io.OutputStreamWriter cannot be cast to > java.io.PrintWriter clojure.data.json/write-json-array (json.clj:254)* > > * > * > > *user => (clojure.data.json/print-json { :a { :aa "b" } } ) * > > *ClassCastException java.io.OutputStreamWriter cannot be cast to > java.io.PrintWriter clojure.data.json/write-json-object (json.clj:238)* > > > > Seems fairly straightforward (I've also tried on lists, nested hashes, > etc). If I look at the source for > json:229<https://github.com/clojure/data.json/blob/master/src/main/clojure/clojure/data/json.clj> > , > the 'out' variable looks to be a PrintWriter (and my local source version is > the same). And a stacktrace gives exactly that location > > > *user=> (. *e printStackTrace)* > > *java.lang.ClassCastException: java.io.OutputStreamWriter cannot be cast > to java.io.PrintWriter* > > * at clojure.data.json$write_json_string.invoke(json.clj:229)* > > * at > clojure.data.json$eval108$fn__109$G__99__118.invoke(json.clj:201)* > > * at clojure.data.json$print_json.doInvoke(json.clj:331)* > > * at clojure.lang.RestFn.invoke(RestFn.java:410)* > > * at user$eval212.invoke(NO_SOURCE_FILE:24)* > > * at clojure.lang.Compiler.eval(Compiler.java:6406)* > > * at clojure.lang.Compiler.eval(Compiler.java:6372)* > > * at clojure.core$eval.invoke(core.clj:2745)* > > * at clojure.main$repl$read_eval_print__6016.invoke(main.clj:244)* > > * at clojure.main$repl$fn__6021.invoke(main.clj:265)* > > * at clojure.main$repl.doInvoke(main.clj:265)* > > * at clojure.lang.RestFn.invoke(RestFn.java:512)* > > * at > user$eval7$acc__1060__auto____8$fn__10.invoke(NO_SOURCE_FILE:1)* > > * at clojure.lang.AFn.run(AFn.java:24)* > > * at java.lang.Thread.run(Thread.java:636)* > > *nil* > > *user=>* > > > > Is there a problem in the data.json lib? > > > Tim > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en