org.json.JSONException: Unterminated object at character 97 of

本文介绍了解决从服务器返回的数据转换为JSON过程中出现的警告问题。主要原因是返回数据中双引号未正确转义导致JSON解析失败。文章提供了解决方案,建议将数据中的双引号进行转义处理。

在获取到从服务器返回的数据,转到json,就会有这个警告

问题出在

JSONObject allresult = new JSONObject(response.toString());

这里

警告:

org.json.JSONTokener.syntaxError(JSONTokener.java:450)
org.json.JSONTokener.readObject(JSONTokener.java:394)
org.json.JSONTokener.nextValue(JSONTokener.java:100)

google之后发现,问题出在

new JSONObject(response.toString())
这里
是在从String转到JSON这里出问题了。
其中在转到JSON的时候语法出问题了
因为返回的的数据格式是根据JSON的格式返回的
例如:{"method":"Re","result":0,"messageID":"20160324162702","reason":"succ"}
其中的
"method":"Re"值有双引号,会造成转义出错。
所以一般都是把双引号转义一下。
可以变成
"method":\"Re\" 或者 
"method":'Re'
这样就不会报这个错误了。


http://stackoverflow.com/questions/8278831/org-json-jsonexception-unterminated-object-at-character-14
点击打开链接

`cn.hutool.json.JSONException: Unterminated string at 180` 错误通常表示 JSON 字符串存在格式问题,具体为在第 180 个字符处字符串未正确结束。以下是一些可能的解决方案: #### 检查字符串中的特殊字符 JSON 字符串中不能包含未转义的特殊字符,如换行符、引号等。可以使用正则表达式替换这些特殊字符。例如,若存在换行符问题,可参考如下代码将换行符替换为空格: ```java import java.util.regex.Pattern; public class JsonStringCleaner { public static String cleanJsonString(String str) { return str.replaceAll("[\n\r]", " "); } public static void main(String[] args) { String dirtyJson = "{\"key\": \"value\nwith newline\"}"; String cleanJson = cleanJsonString(dirtyJson); System.out.println(cleanJson); } } ``` #### 检查 JSON 生成逻辑 若 JSON 是动态生成的,需检查生成逻辑是否正确。确保所有字符串值都正确地用引号括起来,且特殊字符已正确转义。例如,使用 Hutool 的 `JSONUtil` 生成 JSON 时: ```java import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; public class JsonGenerationExample { public static void main(String[] args) { JSONObject json = new JSONObject(); json.put("key", "value"); String jsonStr = JSONUtil.toJsonStr(json); System.out.println(jsonStr); } } ``` #### 调试输出中间结果 在处理 JSON 字符串的过程中,可以输出中间结果,检查每一步的字符串是否符合 JSON 格式。例如: ```java import cn.hutool.json.JSONObject; public class JsonDebugExample { public static void main(String[] args) { String jsonStr = "{\"key\": \"value\"}"; System.out.println("原始 JSON 字符串: " + jsonStr); try { JSONObject json = new JSONObject(jsonStr); System.out.println("解析后的 JSON 对象: " + json); } catch (Exception e) { e.printStackTrace(); } } } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值