Skip to content

Instantly share code, notes, and snippets.

@lsgrep
Forked from treo/gist:faed20d9275276128cc8
Last active August 29, 2015 14:21
Show Gist options
  • Save lsgrep/0d2b7f39e49b577f8b4a to your computer and use it in GitHub Desktop.
Save lsgrep/0d2b7f39e49b577f8b4a to your computer and use it in GitHub Desktop.
(import com.google.gson.stream.JsonReader)
(import com.google.gson.Gson)
(def data "[{\"id\":2,\"name\":\"Thing1\"},{\"id\":3,\"name\":\"Thing2\"},{\"id\":4,\"name\":\"Thing3\"}]")
(def gson (Gson.))
(defrecord example [id name])
(defn to-record [java-map]
(map->example (into {} (map
(juxt
#(keyword (key %))
#(val %))
java-map))))
(defn readJsonStream [in]
(let [reader (JsonReader. in)]
(do
(.beginArray reader)
(loop [data []]
(if (.hasNext reader)
(recur (conj data (to-record (.fromJson gson reader example))))
(do (doto reader
(.endArray)
(.close))
data))))))
(readJsonStream (java.io.StringReader. data))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment