- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用于跳过坏元素的 moshi 自定义 json 适配器,如下所示:
class SkipBadElementsListAdapter(private val elementAdapter: JsonAdapter<Any?>) :
JsonAdapter<List<Any?>>() {
object Factory : JsonAdapter.Factory {
override fun create(
type: Type,
annotations: Set<Annotation>,
moshi: Moshi
): JsonAdapter<*>? {
if (annotations.isNotEmpty() || Types.getRawType(type) != List::class.java) {
return null
}
val elementType = Types.collectionElementType(type, List::class.java)
val elementAdapter = moshi.adapter<Any?>(elementType)
return SkipBadElementsListAdapter(elementAdapter).nullSafe()
}
}
override fun fromJson(reader: JsonReader): List<Any?>? {
val result = mutableListOf<Any?>()
reader.beginArray()
while (reader.hasNext()) {
try {
val peeked = reader.peekJson()
result += elementAdapter.fromJson(peeked)
} catch (ignored: JsonDataException) {
Timber.tag("JsonParseError").d(ignored.toString())
}
reader.skipValue()
}
reader.endArray()
return result
}
override fun toJson(writer: JsonWriter, value: List<Any?>?) {
if (value == null) {
throw NullPointerException("value was null! Wrap in .nullSafe() to write nullable values.")
}
writer.beginArray()
for (i in value.indices) {
elementAdapter.toJson(writer, value[i])
}
writer.endArray()
}
Fatal Exception: java.lang.AssertionError
at com.squareup.moshi.JsonUtf8Reader.<init>(JsonUtf8Reader.java:118)
at com.squareup.moshi.JsonUtf8Reader.peekJson(JsonUtf8Reader.java:1076)
at ir.part.app.signal.core.util.api.SkipBadElementsListAdapter.fromJson(SkipBadElementsListAdapter.java:30)
at ir.part.app.signal.core.util.api.SkipBadElementsListAdapter.fromJson(SkipBadElementsListAdapter.java:7)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
at ir.part.app.signal.core.model.SignalListResponseJsonAdapter.fromJson(SignalListResponseJsonAdapter.java:41)
at ir.part.app.signal.core.model.SignalListResponseJsonAdapter.fromJson(SignalListResponseJsonAdapter.java:17)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:137)
at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:45)
at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:27)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:225)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:121)
at com.google.firebase.perf.network.zzh.onResponse(zzh.java:22)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:203)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:776)
JsonUtf8Reader(JsonUtf8Reader copyFrom) {
...
// Make sure our buffer has as many bytes as the source's buffer. This is necessary because
// JsonUtf8Reader assumes any data it has peeked (like the peekedNumberLength) are buffered.
try {
sourcePeek.require(copyFrom.buffer.size());
} catch (IOException e) {
throw new AssertionError();
}
}
最佳答案
跳过适配器不知道要跳过多少。您希望它跳到当前列表元素的末尾,崩溃可能部分通过复杂对象离开了 JsonReader。
通过 peekJson() 解决到委托(delegate)适配器和总是 无论是否有异常都跳过。
关于android - moshi 自定义 JsonAdapter 跳过坏元素的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59528154/
我关注这个video尝试从 mongodb 获取数据 从 mongodb 获取 JsonArray,并使用 Debug模式检查 JsonTest.java 类:ArrayList songlist;里
问题 想象一下以下字段: @JsonAdapter(CustomTypeAdapter.class) private int field; 反序列化时,CustomTypeAdapter 的read
我有一个用于跳过坏元素的 moshi 自定义 json 适配器,如下所示: class SkipBadElementsListAdapter(private val elementAdapter: J
我不确定我哪里出错了。 我的简单模型是这样的: final class Data { final int num; Data(int num) { this.num = num;
我正在学习本教程:http://www.raywenderlich.com/56111/make-first-android-app-part-3 我们正在使用带有 JSONAdapter 的异步 H
var wall= ArrayList() try { val response = r.getString("response") as String va
我有一个要使用 Gson 序列化的对象: class User { String firstname; String lastname; JsonElement opaqueD
假设我有一个接口(interface) IRunnable和两个实现 Cat和 Dog : interface IRunnable { fun run() } class Cat : IRunna
在以下网址中引用我的问题: 将minsdk更改为26并使用带有android 9的模拟器后 出现以下错误 E/AndroidRuntime: FATAL EXCEPTION: DefaultDispa
我是一名优秀的程序员,十分优秀!