首页 > 代码库 > 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接收,当然要报错了,我还一直钉在那行代码看,真是无语啊,弄了一天半,郁闷啊,遇到问题,一定要解决,不要总想着逃过去,我之前也是想那么做,可是他会一直跟着你,菜鸟,继续走吧,我们一直在路上