Android:ArrayList Gson Deformat

Android:ArrayList Gson Deformat,android,gson,Android,Gson,我想知道如何使物体的Gson阵列列表变形 我得了下列疾病 public class Disease { private int diseaseID; private String diseaseName; private String diseaseDescription; private String diseaseImageURL; } 使用变量的setter和getter 我有一个android布局中的微调器,我想用疾病名称填充它 下面是微调器代码 &l

我想知道如何使物体的Gson阵列列表变形

我得了下列疾病

public class Disease {

    private int diseaseID;
    private String diseaseName;
    private String diseaseDescription;
    private String diseaseImageURL;
}
使用变量的setter和getter

我有一个android布局中的微调器,我想用疾病名称填充它

下面是微调器代码

<Spinner
       android:id="@+id/consultation_deseases"
       android:layout_width="@dimen/bigSpinnerWidth"
       android:layout_height="@dimen/bigSpinnerHeight"
       android:prompt="@string/disease_prompt" />
我尝试使用下面的代码

Disease dis = gson.fromJson(json, Disease.class); 
但是我犯了以下错误

08-12 11:29:18.273: E/AndroidRuntime(7518): FATAL EXCEPTION: main
08-12 11:29:18.273: E/AndroidRuntime(7518): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:180)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.Gson.fromJson(Gson.java:755)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.Gson.fromJson(Gson.java:721)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.Gson.fromJson(Gson.java:670)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.Gson.fromJson(Gson.java:642)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.example.onlineconsultation.LoginActivity$3.onClick(LoginActivity.java:117)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at android.view.View.performClick(View.java:3558)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at android.view.View$PerformClick.run(View.java:14152)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at android.os.Handler.handleCallback(Handler.java:605)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at android.os.Looper.loop(Looper.java:137)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at android.app.ActivityThread.main(ActivityThread.java:4514)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at java.lang.reflect.Method.invokeNative(Native Method)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at java.lang.reflect.Method.invoke(Method.java:511)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at dalvik.system.NativeStart.main(Native Method)
08-12 11:29:18.273: E/AndroidRuntime(7518): Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
08-12 11:29:18.273: E/AndroidRuntime(7518):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:168)
错误在这一行

Disease dis = gson.fromJson(json, Disease.class); 
问题已解决:
Disease[]dis=gson.fromJson(json,Disease[].class)


我很聪明地认识到我应该在一个疾病数组中得到响应,而不是在疾病对象=)

使用:
Disease[]dis=gson.fromJson(json,Disease[].class)


而不是
dis=gson.fromJson(json,Disease.class)

尝试一下,您需要将Json arraylist转换为Java arraylist

Gson gson = new Gson();
ArrayList<Disease> disArray = gson.fromJson(json, new TypeToken<List<Disease>>(){}.getType());
Gson-Gson=new-Gson();
ArrayList disArray=gson.fromJson(json,new-TypeToken(){}.getType());
Gson gson = new Gson();
ArrayList<Disease> disArray = gson.fromJson(json, new TypeToken<List<Disease>>(){}.getType());