2016-07-04 19 views
0

"Contact"オブジェクトとその子オブジェクトのリストを含むこのJSONオブジェクトがあります。 gsonを使用してArrayListContactModelオブジェクトをJSONオブジェクトに取得しようとしていますが、型パラメータの欠落が返されます。 私はこのようなタイプを取得しています:オブジェクトのArrayListのGson型パラメータが欠落しています

Type listType = new TypeToken<ArrayList<ContactModel>>() { }.getType();

そして、このようなリストを取得しよう:

GsonBuilder builder = new GsonBuilder(); 
Gson gson = builder.create(); 

ArrayList<ContactModel> = gson.fromJson(jsonString, listType); 

と私ProGuardの中で、私はこのようなオブジェクトパッケージを保持:

-keep class .somerepo.contactModel.** { *; } 

私は同様の質問を見ましたが、どれも私の問題を解決しませんでした。

致命的な例外:AsyncTask#2プロセス:co.arsh.grapefruit.mci、PID:10360 java.lang.RuntimeException:ここ

がスタックトレースである doInBackgroundを(実行中にエラーが発生しました) android.os.AsyncTask $ 3.done(AsyncTask.java:300) のjava.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) のjava.util.concurrent.FutureTask.setException(FutureTask。 java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) 原因:java.lang.RuntimeException:型パラメータがありません。 at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(SourceFile:84) com.google.gson.reflect.TypeToken(SourceFile:62) at semereop.contact.Contact $ 1(SourceFile:184) somerepo.contact.Contact.getContactsFromJson(SOURCEFILE:184)で

gsonから

getContactsFromJsonメソッドの戻りArrayList<ContactModel>

+0

完全なスタックトレースを共有してください – sidgate

+0

@sidgate投稿を更新しました:) –

+0

変換しようとしているモデルと文字列を投稿できますか? – Calixto

答えて

4

あなたはProGuardのファイルへのより多くの情報を追加する必要があります。GSONリポジトリで提供、ProGuardのファイルのthis exampleを確認し、詳細については

# Gson uses generic type information stored in a class file when working with fields. 
# Proguard removes such information by default, so configure it to keep all of it. 
-keepattributes Signature 
-keepattributes EnclosingMethod 
-keepattributes InnerClasses 
-keepattributes Annotation 

# For using GSON @Expose annotation 
-keepattributes *Annotation* 

# Gson specific classes 
-keep class sun.misc.Unsafe { *; } 

# Application classes that will be serialized/deserialized over Gson 
-keep class com.google.gson.examples.android.model.** { *; } 

+1

ちょうどこの回答を追加する:-keepattributesデフォルトのproguard構成を使用する場合は署名が必要です。 –

関連する問題