采用了android工作室得到错误的反序列化GSON [英] Getting error in gson deserializing using android Studio
问题描述
我的工作中,我使用的Android手机中的联系人在我application.So的应用程序,因为这首先是获取联系方式,并将其存储到ArrayList中。从那以后,我的序列化ArrayList的使用GSON库,当我反序列化得到错误。
我用GSON-2.1.jar用于序列化和反序列化的联系方式。我收到以下错误日志。
AndroidRuntime:致命异常:主要
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但STRING在第1行第8列
在com.google.gson.Gson.fromJson(Gson.java:766)
在com.google.gson.Gson.fromJson(Gson.java:721)
在com.google.gson.Gson.fromJson(Gson.java:670)
在com.google.gson.Gson.fromJson(Gson.java:642)
在com.braintechnix.autoloveapp.util.MyGson.deserializer(MyGson.java:28)
在com.braintechnix.autoloveapp.fragment.ContactListFragment.onStart(ContactListFragment.java:69)
在android.support.v4.app.Fragment.performStart(Fragment.java:1986)
在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061)
在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
在android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:493)
在android.os.Handler.handleCallback(Handler.java:739)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:135)
在android.app.ActivityThread.main(ActivityThread.java:5312)
在java.lang.reflect.Method.invoke(本机方法)
在java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:901)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) java.lang.IllegalStateException:通过而引起的BEGIN_ARRAY但STRING在第1行第8列
在com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
在com.google.gson.stream.JsonReader.beginArray(JsonReader.java:306)
在com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:70)
在com.google.gson.Gson.fromJson(Gson.java:755)
在com.google.gson.Gson.fromJson(Gson.java:721)
在com.google.gson.Gson.fromJson(Gson.java:670)
在com.google.gson.Gson.fromJson(Gson.java:642)
在com.braintechnix.autoloveapp.util.MyGson.deserializer(MyGson.java:28)
在com.braintechnix.autoloveapp.fragment.ContactListFragment.onStart(ContactListFragment.java:69)
在android.support.v4.app.Fragment.performStart(Fragment.java:1986)
在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061)
在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
在android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:493)
在android.os.Handler.handleCallback(Handler.java:739)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:135)
在android.app.ActivityThread.main(ActivityThread.java:5312)
在java.lang.reflect.Method.invoke(本机方法)
在java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:901)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
下面是我使用的code:
公开的ArrayList<联系与GT;解串器(串jsonString){ //类型collectionType =新TypeToken<收集和LT;联系与GT;方式>(){}的getType();
//收集和LT;联系与GT;枚举= gson.fromJson(jsonString,collectionType); 联系[] =接触gson.fromJson(jsonString,联系[]类);
ArrayList的<联系与GT; contactsList =新的ArrayList<联系与GT;();
的for(int i = 0; I< contacts.length;我++){
contactsList.add(联系人[I]);
}
返回contactsList;
}
这是真的很难,没有你所得到的JSON响应,但是从你我可以跟以下code可以帮助你<错误/回答p>
更新了答案
公开的ArrayList&LT;联系与GT;解串器(串jsonString){ //类型collectionType =新TypeToken&LT;收集和LT;联系与GT;方式&gt;(){}的getType();
//收集和LT;联系与GT;枚举= gson.fromJson(jsonString,collectionType);
ArrayList的&LT;联系与GT; 。contactsList =(新GSON())fromJson(jsonString,新TypeToken&LT; ArrayList的&LT;联系与GT;&GT;(){} .getType()); 返回contactsList;
}
以下是一些例子,可以帮助你与GSON库
<一个href=\"http://stackoverflow.com/questions/33699226/how-to-get-a-subobject-from-json-response/33699995#33699995\">ExampleOne
<一个href=\"http://stackoverflow.com/questions/33763051/why-i-can-not-save-the-json-object-into-the-json-array/33763430#33763430\">ExampleTwo
I am working on an application in which I am using android phone contacts in my application.So, for that first of all fetch contact details and store it into ArrayList. After that I serialized that arrayList using gson library and when I deserialize it getting error. I have used gson-2.1.jar for serializing and deserializing contact details. I am getting following error log.
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)
Following is the code which I am using:
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;
}
it is really hard to answer without the json response you are getting but from the error you have i can tell the following code will help you
Updated the answer
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;
}
following are some example that might help you with Gson library
这篇关于采用了android工作室得到错误的反序列化GSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!