首页 > 代码库 > java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 296

java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 296

先贴代码

public class ListDataRequest extends JsonRequest<ArrayList<Note>> {

 public ListDataRequest(int method, String url,Map<String,String> contentBody, Listener<ArrayList<Note>> listener, ErrorListener errorlistener) {
  super(method, url, contentBody, listener, errorlistener);
 }

// public ListDataRequest(String url, Map requestBody, Listener<ArrayList> listener,ErrorListener errorListener){
//  super(url, requestBody, listener, errorListener);
// }

 @Override
 protected Response<ArrayList<Note>> parseNetworkResponse(NetworkResponse response) {
  try {
   return Response.success(parseStrToNoteArray(new String(response.data,
       HttpHeaderParser.parseCharset(response.headers))),
     HttpHeaderParser.parseCacheHeaders(response));
  } catch (UnsupportedEncodingException e) {
   return Response.error(new ParseError(e));
  }
 }
 
 private ArrayList<Note> parseStrToNoteArray(String resultStr) {
  Gson gson = new Gson();
  JsonParser jsonParse = new JsonParser();
  JsonObject rootObj = jsonParse.parse(resultStr).getAsJsonObject();
  ArrayList<Note> array = null;
  try {
   // parseResult(rootObj.getAsJsonObject("root"));
   String json = gson.toJson(rootObj.getAsJsonArray("msg"));
//   Log.i("json", json);
   array = gson.fromJson(gson.toJson(rootObj.getAsJsonArray("msg")),new TypeToken<ArrayList<Note>>() {}.getType());
  } catch (JsonSyntaxException e) {
   e.printStackTrace();
  }
  return array;
 } 

}

 array = gson.fromJson(gson.toJson(rootObj.getAsJsonArray("msg")),new TypeToken<ArrayList<Note>>() {}.getType());

这行代码反复出现 java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 296错误

我就在想啊这地方完全正确啊,怎么你想要一个String  我却给你了个array,怎么回事啊,我盯着这行代码看了一天半,是现在找不到哪里错了,刚开始做了一个demo,把ArrayList里的泛型去掉了,就能正确获取数据,我就在想难道是我的bean错了,我看了看人家的demo,也是一样啊,怎么我的就不行啊,最后还是一个哥给我指出了错误

贴出我的note

 

package com.blue.bean;

import java.util.ArrayList;

import org.json.JSONArray;

import com.google.gson.annotations.SerializedName;

/**
 * @author SLJM
 * @create 2014-4-26
 * @desc 帖子(note)或文章(article)
 *
 */

public class Note {
 /**
  * 帖子ID
  */
 @SerializedName("id")
 public String id;
 /**
  * 用户ID
  */
 @SerializedName("user_id")
 public String user_id;
 /**
  * 评论个数
  */
 @SerializedName("comment_count")
 public String comment_count;
 /**
  *  创建时间
  */
 @SerializedName("data_create")
 public String ctime;
 /**
  * 手机型号
  */
 @SerializedName("phone_type")
 public String phone_type;
 /**
  * 转发个数
  */
 @SerializedName("re_count")
 public String re_count;
 
 /**
  * 帖子类型
  *1:帖子2:单页 3:新闻4:资讯  5:转发帖
  */
 @SerializedName("type")
 public String type;
 
 
 /**
  * 帖子内容
  */
 @SerializedName("info")
 public String content;
 /**
  * 用户昵称
  */
 @SerializedName("user_name")
 public String user_name;
 /**
  * 文章标题(只在行业资讯和文章列表中显示,大咖秀没有)
  */
 @SerializedName("title")
 public String title;
 /**
  *  赞个数
  */
 @SerializedName("like_count")
 public String like_count;
 /**
  *  图片数组
  */
 @SerializedName("img")
 public ArrayList<NotePhoto> img;
 
}

 

这地方img,服务器给的数据是一个Array,我返回的是String,就是这个斜体的地方,我以前是String,人家返回的是一个数组,我却用String接收,当然要报错了,我还一直钉在那行代码看,真是无语啊,弄了一天半,郁闷啊,遇到问题,一定要解决,不要总想着逃过去,我之前也是想那么做,可是他会一直跟着你,菜鸟,继续走吧,我们一直在路上