moshi - 如何使用适用于 Android 的 Moshi JSON 库序列化 ArrayList<float[]>

标签 moshi

我正在尝试使用 Android 的 Moshi 库将 Java 对象转换为 JSON。该对象包含一个类型的属性

ArrayList < float[]>



我正在注册以下适配器来转换对象。
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: Platform java.util.ArrayList annotated [] requires explicit JsonAdapter to be registered at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:50) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at com.squareup.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) at com.squareup.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) at com.squareup.moshi.Moshi.adapter(Moshi.java:57) at com.squareup.moshi.CollectionJsonAdapter.newArrayListAdapter(CollectionJsonAdapter.java:51) at com.squareup.moshi.CollectionJsonAdapter$1.create(CollectionJsonAdapter.java:35) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at com.squareup.moshi.Moshi.adapter(Moshi.java:57)



我认为我的类型定义是错误的,但我似乎无法找到正确的值

最佳答案

正如错误所说,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); .

关于moshi - 如何使用适用于 Android 的 Moshi JSON 库序列化 ArrayList<float[]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43853112/

相关文章:

android - Moshi - 将字符串转换为对象

android - Moshi 1.9.1 无法序列化 Kotlin 类型

android - 使用带有 Retrofit 和 Kotlin 的 moshi 将 jsonarray 解析为对象

android - 使用 Moshi 将字符串日期从 json 转换为 Date 对象

json - Moshi 忽略 Kotlin 中的字段

json - Moshi 的 Kotlin 代码生成器有什么用?

java - 我如何在 Retrofit2 中使用 jsonapi?

android - 如何使用 moshi 反序列化泛型类成员?

java - 如何使用 Moshi 解析未知 key json

android - 改造和 Moshi : Parsing a JSON Object with Two Arrays