我正在尝试使用 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/