Android异常汇集----2. org.json.JSONException:
Unterminated string at character..
本节前言
上一节讲述了自定义常见的异常问题,本节继续分析json解析中出现经典问题.
由于此异常通常出现错误地点不同,
分析此问题步奏通常按照以下几步即可:
本节正文
1.异常描述
JSON数据格式进行解析,出现异常完整信息如下:
06-12 13:08:09.273: W/System.err(31618): org.json.JSONException: Unterminated object at character 133 of {weatherinfo:{city:北京,cityid:101010100,temp:9,WD:西南风, WS:2级,SD:22%,WSE:2,isRadar:1,Radar:JC_RADAR_AZ9010_JB,njd:暂无实况,qy:1014,time:10:45}}
at org.json.JSONTokener.syntaxError(JSONTokener.java:451)
at org.json.JSONTokener.nextString(JSONTokener.java:219)
at org.json.JSONTokener.nextValue(JSONTokener.java:316)
at org.json.JSONObject.<init>(JSONObject.java:206)
at org.json.JSONTokener.nextValue(JSONTokener.java:319)
at org.json.JSONArray.<init>(JSONArray.java:126)
at org.json.JSONTokener.nextValue(JSONTokener.java:323)
at org.json.JSONObject.<init>(JSONObject.java:206)
at org.json.JSONObject.<init>(JSONObject.java:327)
at cn.eshore.statis.util.AndroidServletTest.main(AndroidServletTest.java:74)
2.分析过程
这是打印的log信息,可以看到去除了双引号,看到最后 time:10:45 解析的结果出现了,格式问题。。
06-12 13:08:09.273: E/blueberry(31618): {weatherinfo:{city:北京,cityid:101010100,temp:9,WD:西南风, WS:2级,SD:22%,WSE:2,isRadar:1,Radar:JC_RADAR_AZ9010_JB,njd:暂无实况,qy:1014,time:10:45}}
3.错误原因
由于解析格式出现错误,特殊字符出现导致,所以避免json中出现特殊字符。
4.解决方法
规范化数据格式.
5.得出结论
发送JSON数据格式不正确,
即:手机终端那边 抛出的异常信息然后直接放到Json字符串中,而异常信息里面有多个换行或者空格以及特殊字符,然后再通过上报接口传送到Java这边,接着Java这边解析时导致解析json报异常 。