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

解决了 谢谢

0

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());//就是这里报错 

0

好帮手慕雪

2017-06-14

你好,是运行时异常还是编译时异常?如果是运行时的异常:那就仔细检查一下Log.e("TGA", "run: "+result);或Log.e("TGA", "run: "+data );输出是否正常,或者看一下返回的json字符串和你定义的Outline的字段是否一致。如果是编译时的异常就确认一下Outline类是否存在。祝:学习愉快

0

0 学习 · 1613 问题

查看课程