【发布时间】:2015-08-19 11:54:32
【问题描述】:
我正在使用 AsyncTask 从后端服务器检索数据并使用 gson 解析器对其进行解析。当我多次执行 AsyncTask 时,我收到了 com.google.gson.JsonSyntaxException
这是我的异步解析器
public class ParseTask extends AsyncTask<String, Void, JsonObject> {
public JsonObject jsonObject;
String url;
@Override
protected JsonObject doInBackground(String... arg0) {
url = arg0[0];
try {
URL uRL = new URL(url);
HttpURLConnection connection = (HttpURLConnection) uRL.openConnection();
connection.connect();
JsonParser parser = new JsonParser();
jsonObject = parser.parse(new InputStreamReader((InputStream) connection.getContent())).getAsJsonObject();
} catch (Exception e) {
e.printStackTrace();
}
return jsonObject;
}
@Override
protected void onPostExecute(JsonObject json) {
super.onPostExecute(json);
}
}
这是我的主要活动
public class DrillOneFragment extends Activity {
private static String url = "abc";
private static final String TAG_YEAR = "year";
LayoutParams params;
View view;
private JsonObject result;
String q;
String[] qq = { "2013", "2014" };
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.a);
for (int i = 0; i < 2; i++) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair(TAG_YEAR, qq[i]));
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
try {
result = new ParseTask().execute(url).get();
Log.e(qq[i], result.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这是我的日志
08-19 17:14:51.937: W/System.err(14735):
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6 path $
08-19 17:14:51.937: W/System.err(14735): at com.google.gson.JsonParser.parse(JsonParser.java:65)
08-19 17:14:51.937: W/System.err(14735): at com.example.tester.ParseTask.doInBackground(ParseTask.java:25)
08-19 17:14:51.937: W/System.err(14735): at com.example.tester.ParseTask.doInBackground(ParseTask.java:1)
08-19 17:14:51.937: W/System.err(14735): at android.os.AsyncTask$2.call(AsyncTask.java:288)
08-19 17:14:51.937: W/System.err(14735): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-19 17:14:51.937: W/System.err(14735): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
08-19 17:14:51.937: W/System.err(14735): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-19 17:14:51.937: W/System.err(14735): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-19 17:14:51.937: W/System.err(14735): at java.lang.Thread.run(Thread.java:841)
08-19 17:14:51.937: W/System.err(14735): Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6 path $
08-19 17:14:51.937: W/System.err(14735): at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1573)
08-19 17:14:51.937: W/System.err(14735): at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1423)
08-19 17:14:51.937: W/System.err(14735): at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:546)
08-19 17:14:51.937: W/System.err(14735): at com.google.gson.stream.JsonReader.peek(JsonReader.java:429)
08-19 17:14:51.937: W/System.err(14735): at com.google.gson.JsonParser.parse(JsonParser.java:60)
08-19 17:14:51.937: W/System.err(14735): ... 8 more
08-19 17:14:51.937: W/System.err(14735): java.lang.NullPointerException
08-19 17:14:51.937: W/System.err(14735): at com.example.tester.DrillOneFragment.onCreate(DrillOneFragment.java:41)
08-19 17:14:51.937: W/System.err(14735): at android.app.Activity.performCreate(Activity.java:5248)
08-19 17:14:51.937: W/System.err(14735): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-19 17:14:51.937: W/System.err(14735): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
08-19 17:14:51.937: W/System.err(14735): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2247)
08-19 17:14:51.937: W/System.err(14735): at android.app.ActivityThread.access$800(ActivityThread.java:141)
08-19 17:14:51.937: W/System.err(14735): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
08-19 17:14:51.937: W/System.err(14735): at android.os.Handler.dispatchMessage(Handler.java:102)
08-19 17:14:51.937: W/System.err(14735): at android.os.Looper.loop(Looper.java:136)
08-19 17:14:51.937: W/System.err(14735): at android.app.ActivityThread.main(ActivityThread.java:5050)
08-19 17:14:51.937: W/System.err(14735): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 17:14:51.937: W/System.err(14735): at java.lang.reflect.Method.invoke(Method.java:515)
08-19 17:14:51.937: W/System.err(14735): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-19 17:14:51.937: W/System.err(14735): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
08-19 17:14:51.937: W/System.err(14735): at dalvik.system.NativeStart.main(Native Method)
提前致谢。
【问题讨论】:
-
我们可以看到堆栈跟踪吗?
标签: android parsing android-asynctask gson