Hi, You probably need to realize your query using (doall (jdbc/query ...))
Also, I was wondering, depending on your needs, you could convert Jdbc4Arrayinto a native type (vector ?) as a post-processing function of your query and forget about registering JSON writers. On Tue, Oct 1, 2013 at 9:00 PM, Christian Jauvin <cjau...@gmail.com> wrote: > Hi Roman, > > This approach works for java.sql.Timestamp, which was another type for > which a JSON writer wasn't defined in my case. > > For org.postgresql.jdbc4.Jdbc4Array however, there's something missing, > because I get: > > *org.postgresql.util.PSQLException: This connection has been closed.* > > As the person answering me on Stack Overflow suggested, it seems that the > resultset should be somehow processed before the connection is closed, but > I really don't know how to do given the construct I'm currently using: > > (json/write-str > (jdbc/query *db* > ["SELECT * FROM .."])) > > where and how could I intercept the resultset that way? Thanks. > > > > On Tuesday, October 1, 2013 12:49:10 PM UTC-4, r0man wrote: >> >> I think you need to implement the JSONWriter protocol for the >> Jdbc4Array class, and possibly for the datatypes that are in the >> array. This for example makes the json library aware of >> java.util.Date classes. >> >> (extend-type java.util.Date >> JSONWriter >> (-write [date out] >> (-write (str date) out))) >> >> Something like this (not tested): >> >> (extend-type org.postgresql.jdbc4.**Jdbc4Array >> JSONWriter >> (-write [array out] >> (-write (seq (.getArray array)) out))) >> >> Roman >> >> >> On Tuesday, October 1, 2013 3:57:02 PM UTC+2, Christian Jauvin wrote: >>> >>> Hi, >>> >>> I asked this question on Stack Overflow yesterday: >>> >>> I want to jsonify the results of a query performed against a Postgres >>> table containing a column of type text[], but the problem is that >>> clojure.data.json.write-str doesn't seem to know how to handle PG >>> arrays: >>> >>> *Exception Don't know how to write JSON of class >>> org.postgresql.jdbc4.Jdbc4Array >>> clojure.data.json/write-generic* >>> >>> Do I have to supply a custom handler, or is there a simpler way? >>> >>> >>> http://stackoverflow.com/**questions/19103870/jsonify-a-** >>> jdbc4array-in-clojure<http://stackoverflow.com/questions/19103870/jsonify-a-jdbc4array-in-clojure> >>> >>> I'm asking it here in the hope of getting (maybe) a simpler solution, or >>> at least one I can implement readily, because the problem I have with one >>> of the suggestions I received (extending org.postgresql.jdbc4.** >>> Jdbc4Array to implement the missing function) is that I don't know how >>> to make it work with my usage pattern, which is simply: >>> >>> (json/write-str >>> (jdbc/query *db* >>> ["SELECT * FROM ..."])) >>> >>> How do I "get the array before the connection is closed" with such a >>> construct? Is there another way? >>> >>> -- > -- > 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 > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- Philippe -- -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.