Gson解析异常,请求大神解惑,感激不尽啊

许李超 2016-02-20 09:27:48
02-20 21:26:26.118: I/Timeline(21380): Timeline: Activity_launch_request id:com.gupian1999 time:20331559
02-20 21:26:26.348: V/SlidingMenu(21380): setting padding!
02-20 21:26:26.468: V/CustomViewBehind(21380): behind INVISIBLE
02-20 21:26:26.558: D/AndroidRuntime(21380): Shutting down VM
02-20 21:26:26.558: W/dalvikvm(21380): threadid=1: thread exiting with uncaught exception (group=0x41645d58)
02-20 21:26:26.568: E/AndroidRuntime(21380): FATAL EXCEPTION: main
02-20 21:26:26.568: E/AndroidRuntime(21380): Process: com.gupian1999, PID: 21380
02-20 21:26:26.568: E/AndroidRuntime(21380): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 71
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.Gson.fromJson(Gson.java:803)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.Gson.fromJson(Gson.java:768)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.Gson.fromJson(Gson.java:717)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.Gson.fromJson(Gson.java:689)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.gupian1999.activity.GuZhiActivity$3.onSuccess(GuZhiActivity.java:170)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.lidroid.xutils.http.HttpHandler.onProgressUpdate(HttpHandler.java:218)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.lidroid.xutils.task.PriorityAsyncTask$InternalHandler.handleMessage(PriorityAsyncTask.java:385)
02-20 21:26:26.568: E/AndroidRuntime(21380): at android.os.Handler.dispatchMessage(Handler.java:102)
02-20 21:26:26.568: E/AndroidRuntime(21380): at android.os.Looper.loop(Looper.java:136)
02-20 21:26:26.568: E/AndroidRuntime(21380): at android.app.ActivityThread.main(ActivityThread.java:5095)
02-20 21:26:26.568: E/AndroidRuntime(21380): at java.lang.reflect.Method.invokeNative(Native Method)
02-20 21:26:26.568: E/AndroidRuntime(21380): at java.lang.reflect.Method.invoke(Method.java:515)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
02-20 21:26:26.568: E/AndroidRuntime(21380): at dalvik.system.NativeStart.main(Native Method)
02-20 21:26:26.568: E/AndroidRuntime(21380): Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 71
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:374)
02-20 21:26:26.568: E/AndroidRuntime(21380): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:165)
02-20 21:26:26.568: E/AndroidRuntime(21380): ... 17 more


以上是错误logcat



二.这是实体类
package com.gupian1999.model;

import java.io.Serializable;
import java.util.ArrayList;

public class GuZhi implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String error_code;
private String reason;
private Result result;
//ArrayList<Result> list;

public class Result implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String dealNum;
private String dealPri;
private String highPri;
private String lowpri;
private String name;
private String nowpri;
private String openPri;
private String time;
private String yesPri;
public String getDealNum() {
return dealNum;
}
public void setDealNum(String dealNum) {
this.dealNum = dealNum;
}
public String getDealPri() {
return dealPri;
}
public void setDealPri(String dealPri) {
this.dealPri = dealPri;
}
public String getHighPri() {
return highPri;
}
public void setHighPri(String highPri) {
this.highPri = highPri;
}
public String getLowpri() {
return lowpri;
}
public void setLowpri(String lowpri) {
this.lowpri = lowpri;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNowpri() {
return nowpri;
}
public void setNowpri(String nowpri) {
this.nowpri = nowpri;
}
public String getOpenPri() {
return openPri;
}
public void setOpenPri(String openPri) {
this.openPri = openPri;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getYesPri() {
return yesPri;
}
public void setYesPri(String yesPri) {
this.yesPri = yesPri;
}


}


public String getError_code() {
return error_code;
}

public void setError_code(String error_code) {
this.error_code = error_code;
}

public String getReason() {
return reason;
}

public void setReason(String reason) {
this.reason = reason;
}

public Result getResult() {
return result;
}

public void setResult(Result result) {
this.result = result;
}




}


三.获取的json利用gson解析成实体类,代码如下

gson = new Gson();
GuZhi sGuZhi = gson.fromJson(responseInfo.result, GuZhi.class);
System.out.println(sGuZhi.toString());
setShenDatas(sGuZhi);

四.下面是数据的使用

// 设置上证的数据
private void setSZDatas(GuZhi sGuZhi) {
Result result= sGuZhi.getResult();
tv_sz_nowpri.setText(FomatNumUtil.fomatNum(result.getYesPri()));
info1_dealNum.setText(FomatNumUtil.fomatNum(result.getDealNum()));
info1_dealMon.setText(FomatNumUtil.fomatNum(result.getDealPri()));
info1_highPri.setText(FomatNumUtil.fomatNum(result.getHighPri()));
info1_lowpri.setText(FomatNumUtil.fomatNum(result.getLowpri()));
info1_nowpri.setText(FomatNumUtil.fomatNum(result.getNowpri()));
info1_openPri.setText(FomatNumUtil.fomatNum(result.getOpenPri()));
info1_yesPri.setText(FomatNumUtil.fomatNum(result.getYesPri()));
info1_time.setText(result.getTime());
double now = Double.parseDouble(result.getNowpri());
double yes = Double.parseDouble(result.getYesPri());
DecimalFormat df = new DecimalFormat("######0.00");

//System.out.println(now - yes);
tv_sz_nowpri_yespri.setText(FomatNumUtil.fomatNum(df.format(now-yes)));

}
...全文
3066 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wei220000 2016-02-20
  • 打赏
  • 举报
回复
responseInfo.result 你只有完整的检查下这个的结果了。如果包含了[ 符号,就说明是数组了。
wei220000 2016-02-20
  • 打赏
  • 举报
回复
亲测,没问题啊。
许李超 2016-02-20
  • 打赏
  • 举报
回复
{ "error_code":0, "reason":"SUCCESSED!", "result":{ "dealNum":"163391413", "dealPri":"178424845383", "highPri":"2872.7236", "lowpri":"2840.4876", "name":"上证指数", "nowpri":"2860.0208", "openPri":"2854.9040", "time":"2016-02-19 15:03:00", "yesPri":"2862.8927" } } 接口刚查的没问题,能获取json文件
许李超 2016-02-20
  • 打赏
  • 举报
回复
----------------------------------深(上)证指数示例------------------------------------------------------------------ { "error_code": 0 "reason": "SUCCESSED!", "result": { "dealNum": "24388041799",/*成交量*/ "dealPri": "340674441059.270",/*成交额*/ "highPri": "10357.417",/*最高*/ "lowpri": "10121.741",/*最低*/ "name": "深证成指",/*名称*/ "nowpri": "10270.855",/*当前价格*/ "openPri": "10200.547",/*今开*/ "time": "2015-09-22 14:45:25",/*时间*/ "yesPri": "10176.727"/*昨收*/ }, } 上面是json文件,这个只有一个对象,可以不用集合或者数组啊,我用数组和集合试了,不行
许李超 2016-02-20
  • 打赏
  • 举报
回复
responseInfo.result是请求接口获取的json文件,用嵌套内部类也可以吧,不用拿出来
wei220000 2016-02-20
  • 打赏
  • 举报
回复
你设置的类有问题吧?GuZhi中嵌套了类Result?你吧result类单独拿出来吧。关键是看看你的responseInfo.result是一个什么数据。
ywl5320 2016-02-20
  • 打赏
  • 举报
回复
这个错误是 要解析的json数据是集合类型的,你解析是不是按集合类型解析的,所以报错了,你要看看服务器返回的json数据是怎样的才行。。。
许李超 2016-02-20
  • 打赏
  • 举报
回复
解析的数据是对象类型的,我用的也是对象的方法和属性,怎么报我使用的是数组啊,真是搞不懂,我明明是使用对象的get方法去获取数据的;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
许李超 2016-02-20
  • 打赏
  • 举报
回复
大神呢,来个人看看吧
许李超 2016-02-20
  • 打赏
  • 举报
回复
没人来,自顶100楼

80,476

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧