Android:执行任务时字符串无法转换JSON对象错误
Posted
技术标签:
【中文标题】Android:执行任务时字符串无法转换JSON对象错误【英文标题】:Android : String can not be converted JSON object error while executing task 【发布时间】:2021-11-17 11:02:28 【问题描述】:尝试执行以下代码,google的翻译API
DefaultHttpClient localDefaultHttpClient = new DefaultHttpClient();
HttpParams localHttpParams = localDefaultHttpClient.getParams();
localHttpParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, Integer.valueOf(10000));
localHttpParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, Integer.valueOf(10000));
localHttpParams.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "utf-8");
HttpProtocolParams.setUserAgent(localHttpParams, "androidTranslate/2.5.3 2.5.3 (gzip)");
try
str1 = new BufferedReader(new InputStreamReader(localDefaultHttpClient.execute
(new HttpPost("https://translate.google.com/translate_a/t?client=at&sc=1&v=2.0&sl="
+ Global.lan1 + "&tl=" + Global.lan2 + "&ie=UTF-8&oe=UTF-8&text="
+ URLEncoder.encode(params[0], "UTF-8"))).getEntity().getContent(), "utf-8"), 8).readLine();
catch (IOException e)
e.printStackTrace();
if (str1 != null)
try
localJSONObject = new JSONObject(str1);
catch (Exception e)
e.printStackTrace();
在此代码运行正常之前,但几天我收到以下错误
W/System.err: org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
W/System.err: at org.json.JSON.typeMismatch(JSON.java:112)
W/System.err: at org.json.JSONObject.<init>(JSONObject.java:169)
W/System.err: at org.json.JSONObject.<init>(JSONObject.java:182)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.length()' on a null object reference
是的,我已经在 google 和 SO 上搜索了相关答案并得到了一些解决方案并尝试了我的代码,但我仍然收到此错误,可能是我在某个地方弄错了,但我不知道具体在哪里。 任何人都可以指导我确切的错误在哪里
【问题讨论】:
【参考方案1】:!DOCTYPE
通常与 html 而非 JSON 相关联。您确定您调用的 API 返回的是 JSON 而不是 HTML 页面本身。查看该谷歌翻译 URL,您似乎正在获取 HTML 页面并尝试将 HTML 页面解析为 JSON,因此它失败了。
我会调试str1
并查看str1
的输出到底是什么。
【讨论】:
那么,将该页面转换为 JSON 对象的解决方案是什么,无论如何 您使用的是 Google Translate API 并且许可已过期?因此,它不是从 API 向您发送回 JSON,而是在一些 HTML 页面中发送。我会检查str1
的内容并将其发布在这里。你说它以前可以工作,现在它不再工作了?
是的,没错,它以前可以工作,但现在不行,正如你所说,我已经调试了我的代码,结果在 str1 中得到了以上是关于Android:执行任务时字符串无法转换JSON对象错误的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Android 中将 java 字符串转换为 JSON 数组
Json Deseralizer 无法将字符串转换为 guid
Android JSON解析字符串无法转换为jsonobject