我正在编写一个应用程序retrofit
,该应用程序用于api-yandex
翻译单词。
一个单词或句子用逗号但没有空格,他从容地翻译。
但是如果请求中出现了一个包含逗号的句子,那么应用就崩溃了,为什么?
错误在gson.fromjson
.
try {
Response<Object> response = call.execute();
if (response != null) {
Log.e(TAG, String.valueOf(response.body()));
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
Log.e(TAG,"test");
String jsonResponse = String.valueOf(response.body());
Log.e(TAG,"test2");
Map<String,String> map = gson.fromJson(jsonResponse, Map.class);
Log.e(TAG,"test3");
for(Map.Entry e: map.entrySet()){
Log.e(TAG,e.getKey() + " " + e.getValue());
translated = String.valueOf(e.getValue());
}
Log.e(TAG,"end test");
}
} catch (IOException e) {
e.printStackTrace();
}
这是错误
Thread.run(Thread.java:818) 引起:com.google.gson.stream.MalformedJsonException:未终止的数组在第 1 行第 39 列路径 $.[1] 在 com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559) 在 com.google.gson.stream.JsonReader.doPeek(JsonReader.java:476) (JsonReader.java:414) 在 com.google。 gson.internal.bind.ObjectTypeAdapter.read(ObjectTypeAdapter.java:
@woesss
在同一个练习中遇到了类似的问题,
要求翻译“妈妈洗过框架”(我添加的引号)
由于2-3天的时间浏览了所有论坛,我想通了。不建议使用 AsyncTask (但我认为可以),主要问题是没有使用序列化类,由于某种原因改造被设计为那样工作。
序列化类示例: