gpt4 book ai didi

android - 使用android Studio在gson反序列化中出错

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:10 25 4
gpt4 key购买 nike

我正在开发一个在我的应用程序中使用 Android 手机联系人的应用程序。因此,首先获取联系人详细信息并将其存储到 ArrayList 中。之后,我使用 gson 库序列化了那个 arrayList,当我反序列化它时出现错误。 我使用 gson-2.1.jar 序列化和反序列化联系人详细信息。我收到以下错误日志。

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

最佳答案

如果没有你得到的 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;
}

以下是一些可能对您使用 Gson 库有帮助的示例

ExampleOne

ExampleTwo

关于android - 使用android Studio在gson反序列化中出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33811133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com