2017-05-08 99 views
1

我想使用Android的Moshi庫將Java對象轉換爲JSON。該對象包含類型如何使用Moshi JSON庫對Android ArrayList <float[]>進行序列化

的ArrayList的屬性<浮子[]>

,我註冊以下適配器將對象轉換。

Type type = Types.newParameterizedType 
     (List.class, HistoryPath.class, ArrayList.class, Float[].class, Float.class); 

JsonAdapter<Drawing> adapter = moshi.adapter(type); 

String json = adapter.toJson(drawing); 

的 「的toJSON」 方法失敗有以下例外:

java.lang.IllegalArgumentException異常:平臺 java.util.ArrayList中註釋[]要求顯式 JsonAdapter在 登記 com.squareup.moshi.ClassJsonAdapter $ 1.create(ClassJsonAdapter.java:50) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at com.squar eup.moshi.ClassJsonAdapter $ 1.createFieldBindings(ClassJsonAdapter.java:90) at com.squareup.moshi.ClassJsonAdapter $ 1.create(ClassJsonAdapter.java:74) at com.squareup.moshi.Moshi.adapter(Moshi.java :99) 在 com.squareup.moshi.ClassJsonAdapter $ 1.createFieldBindings(ClassJsonAdapter.java:90) 在 com.squareup.moshi.ClassJsonAdapter $ 1,創建(ClassJsonAdapter.java:74) 在com.squareup.moshi .Moshi.adapter(Moshi.java:99) at com.squareup.moshi.Moshi.adapter(Moshi.java:57) at com.squareup.moshi.Collectio nJsonAdapter.newArrayListAdapter(CollectionJsonAdapter.java:51) 在 com.squareup.moshi.CollectionJsonAdapter $ 1,創建(CollectionJsonAdapter.java:35) 在com.squareup.moshi.Moshi.adapter(Moshi.java:99) 在com.squareup.moshi.Moshi.adapter(Moshi.java:57)

我想我喜歡的類型定義是錯誤的,但我似乎無法找到合適的值

回答

3

的ArrayList是一個平臺型,如錯誤所述。 您可以使用List(或專門爲ArrayList創建自定義JsonAdapter)。

而且,這裏有一個問題: Type type = Types.newParameterizedType(List.class, HistoryPath.class, ArrayList.class, Float[].class, Float.class);

這種類型List<HistoryPath, ArrayList, Float[], Float>這是無效的,而且不會產生正確的結果爲JsonAdapter<Drawing> adapter = moshi.adapter(type);

您可能只想要JsonAdapter<Drawing> adapter = moshi.adapter(Drawing.class);

+0

獲取根據您的建議不同的錯誤: 的ArrayList 註釋[]要求註冊 – AndroidGuy

+1

@androidguy的ArrayList是一個平臺型的明確JsonAdapter。你需要爲它註冊一個JsonAdapter,或者使用List。 –

相關問題