调用 (clojure.data.json/read-str (String. (byte-array [0])))
产生了一个很神秘的错误消息(没有匹配的子句:0
)。我想在用户提供的错误数据的情况下提供更有用的消息。
当前 next-token
的实现是
(defn- next-token [^PushbackReader stream]
(loop [c (.read stream)]
(if (< 32 c)
(int c)
(codepoint-case (int c)
:whitespace (recur (.read stream))
-1 -1))))
将最后一行 -1 -1
改为 (int c)
结果产生更有帮助的消息
(clojure.data.json/read-str (String. (byte-array [0])))
-> JSON 错误(意外的字符):\0
(clojure.data.json/read-str (String. (byte-array [123 0])))
-> JSON 错误(对象中的非字符串键),找到 \0,期望 "