Comet4j是一個(gè)基于Java的輕量級(jí)長(zhǎng)輪詢框架,它具有簡(jiǎn)單易用、高效穩(wěn)定等特點(diǎn),被廣泛應(yīng)用于網(wǎng)絡(luò)推送、在線聊天等領(lǐng)域。然而,有些使用者在使用Comet4j的過(guò)程中會(huì)遇到一個(gè)json轉(zhuǎn)換異常的問(wèn)題。
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: java.io.StringReader@2af0ac9a; line: 1, column: 2]
以上異常出現(xiàn)的原因是Comet4j在處理返回結(jié)果時(shí),將異常信息寫(xiě)到了response.getOutputStream()中,導(dǎo)致json數(shù)據(jù)格式不正確。這時(shí)我們需要做出相應(yīng)的調(diào)整,才能避免這個(gè)問(wèn)題。
首先,我們需要清楚的是Comet4j主要是通過(guò)response返回json格式的數(shù)據(jù),因此我們需要將異常信息封裝成一個(gè)JsonObject對(duì)象,并將其通過(guò)response.getWriter()方法返回。
JSONObject json = new JSONObject(); json.put("code", "500"); json.put("message", "服務(wù)器錯(cuò)誤"); response.getWriter().write(json.toJSONString()); response.getWriter().flush(); response.getWriter().close();
這樣一來(lái),返回的json數(shù)據(jù)將會(huì)是正確的格式,而不會(huì)出現(xiàn)異常信息。
綜上所述,Comet4j在使用過(guò)程中遇到j(luò)son轉(zhuǎn)換異常的問(wèn)題是比較常見(jiàn)的,需要我們注意對(duì)返回結(jié)果進(jìn)行封裝,并采用正確的輸出流方法進(jìn)行返回。