使用android Studio进行gson反序列化时出错
我正在开发一个应用程序,其中我在应用程序中使用android手机联系人。因此,首先获取联系人详细信息并将其存储到ArrayList中。之后,我使用gson库序列化了该arrayList,当我反序列化它时,得到了一个错误。 我使用gson-2.1.jar序列化和反序列化联系人详细信息。我得到以下错误日志使用android Studio进行gson反序列化时出错,android,serialization,android-studio,gson,deserialization,Android,Serialization,Android Studio,Gson,Deserialization,我正在开发一个应用程序,其中我在应用程序中使用android手机联系人。因此,首先获取联系人详细信息并将其存储到ArrayList中。之后,我使用gson库序列化了该arrayList,当我反序列化它时,得到了一个错误。 我使用gson-2.1.jar序列化和反序列化联系人详细信息。我得到以下错误日志 AndroidRuntime﹕ FATAL EXCEPTION: main com.google.gson.JsonSyntaxException: java.lang.Ill
AndroidRuntime﹕ FATAL EXCEPTION: main
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 8
at com.google.gson.Gson.fromJson(Gson.java:766)
at com.google.gson.Gson.fromJson(Gson.java:721)
at com.google.gson.Gson.fromJson(Gson.java:670)
at com.google.gson.Gson.fromJson(Gson.java:642)
at com.braintechnix.autoloveapp.util.MyGson.deserializer(MyGson.java:28)
at com.braintechnix.autoloveapp.fragment.ContactListFragment.onStart(ContactListFragment.java:69)
at android.support.v4.app.Fragment.performStart(Fragment.java:1986)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 8
at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:306)
at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:70)
at com.google.gson.Gson.fromJson(Gson.java:755)
at com.google.gson.Gson.fromJson(Gson.java:721)
at com.google.gson.Gson.fromJson(Gson.java:670)
at com.google.gson.Gson.fromJson(Gson.java:642)
at com.braintechnix.autoloveapp.util.MyGson.deserializer(MyGson.java:28)
at com.braintechnix.autoloveapp.fragment.ContactListFragment.onStart(ContactListFragment.java:69)
at android.support.v4.app.Fragment.performStart(Fragment.java:1986)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
以下是我正在使用的代码:
public ArrayList<Contact> deserializer(String jsonString){
//Type collectionType = new TypeToken<Collection<Contact>>(){}.getType();
// Collection<Contact> enums = gson.fromJson(jsonString, collectionType);
Contact[] contacts = gson.fromJson(jsonString, Contact[].class);
ArrayList<Contact> contactsList = new ArrayList<Contact>();
for(int i = 0; i< contacts.length; i++){
contactsList.add(contacts[i]);
}
return contactsList;
}
公共ArrayList反序列化程序(字符串jsonString){
//Type collectionType=new-TypeToken(){}.getType();
//集合枚举=gson.fromJson(jsonString,collectionType);
Contact[]contacts=gson.fromJson(jsonString,Contact[].class);
ArrayList contactsList=新建ArrayList();
对于(int i=0;i
如果没有json响应,很难回答问题,但是从您的错误中,我可以看出以下代码将对您有所帮助
更新了答案
public ArrayList<Contact> deserializer(String jsonString){
//Type collectionType = new TypeToken<Collection<Contact>>(){}.getType();
// Collection<Contact> enums = gson.fromJson(jsonString, collectionType);
ArrayList<Contact> contactsList = (new Gson()).fromJson(jsonString,new TypeToken<ArrayList<Contact>>() {}.getType());
return contactsList;
}
公共ArrayList反序列化程序(字符串jsonString){
//Type collectionType=new-TypeToken(){}.getType();
//集合枚举=gson.fromJson(jsonString,collectionType);
ArrayList contactsList=(new Gson()).fromJson(jsonString,new TypeToken
显示您的json和模型请同时发布代码您用来读取json的对象是错误的,它应该是您应该读取的数组添加的代码。如果需要更多关于代码的详细信息,请告诉我。我也会发布这些内容。谢谢您的帮助。