Gson解析异常
来源:2-7 使用Gson解析数据
qq_whenhellfree_03375903
2017-06-14 10:31:22
new Thread(){
@Override
public void run() {
try{
URL url=new URL("http://www.imooc.com/api/teacher?type=3&cid=2");
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setReadTimeout(6000);
conn.setRequestMethod("GET");
if (conn.getResponseCode()==200){
InputStream is= conn.getInputStream();
byte[] by=new byte[1024*512];
int len=0;
ByteArrayOutputStream baos=new ByteArrayOutputStream();
while ((len=is.read(by))>-1){
baos.write(by,0,len);
}
String result=baos.toString();
Log.e("TGA", "run: "+result);
String data=new JSONObject(result).getString("data");
Log.e("TGA", "run: "+data );
Gson gson=new Gson();
outlines = gson.fromJson(data
//这里一直报错不知道为什么 敲了几遍还是一样的,new TypeToken<ArrayList<Outline>>(){}.getType());
for(int i = 0 ; i < outlines.size() ; i++){
Outline o = outlines.get(i);
Log.e("TAG","id:" + o.getId() + ", 标题:" + o.getName());
}
}
}catch ( MalformedURLException e){
e.getMessage();
}catch (IOException e){
e.getMessage();
}catch (JSONException e){
Log.d("TGA", "run: "+"解析错误");
e.printStackTrace();
}
}
}3回答
qq_whenhellfree_03375903
提问者
2017-06-15
解决了 谢谢
qq_whenhellfree_03375903
提问者
2017-06-14
E/AndroidRuntime: FATAL EXCEPTION: Thread-12559
Process: com.example.httpactivitydemo, PID: 26904
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
at com.google.gson.Gson.fromJson(Gson.java:899)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
at com.example.httpactivitydemo.MainActivity$2.run(MainActivity.java:211)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:350)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:80)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.fromJson(Gson.java:887)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
at com.example.httpactivitydemo.MainActivity$2.run(MainActivity.java:211)
outlines = gson.fromJson(data, new TypeToken<ArrayList<Outline>>() {
}.getType());//就是这里报错
好帮手慕雪
2017-06-14
你好,是运行时异常还是编译时异常?如果是运行时的异常:那就仔细检查一下Log.e("TGA", "run: "+result);或Log.e("TGA", "run: "+data );输出是否正常,或者看一下返回的json字符串和你定义的Outline的字段是否一致。如果是编译时的异常就确认一下Outline类是否存在。祝:学习愉快
相似问题