1. 程式人生 > >Gson解析異常,請求大神解惑,感激不盡啊

Gson解析異常,請求大神解惑,感激不盡啊

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)));

}