gpt4 book ai didi

json - 如何使用 Moshi 以两种不同的方式解析字段

转载 作者:行者123 更新时间:2023-12-02 12:47:13 28 4
gpt4 key购买 nike

我需要解析一个包含属性“触发器”的对象,它是一个 List<Trigger> .此列表可以包含 2 种类型的触发器:自定义和事件。
这是我的触发器类:

  @JsonClass(generateAdapter = true)
open class Trigger(open val type: String,
open val source: String,
open val tags: Properties? = mutableMapOf())
  @JsonClass(generateAdapter = true)
data class CustomTrigger(override val type: String,
override val source: String,
override val tags: Properties?,
//some other fields
) : Trigger(type, source, tags)
@JsonClass(generateAdapter = true)
data class EventTrigger(override val type: String,
override val source: String,
override val tags: Properties?,
//some other fields
) : Trigger(type, source, tags)

我从服务器收到的对象如下所示:
@JsonClass(generateAdapter = true)
data class Rule(val id: String,
val triggers: MutableList<Trigger>,
//some other fields
)

在解析时使用生成的适配器我只触发来自 Trigger 的字段类(class)。我需要实现一个逻辑来解析 EventTrigger类型是“事件”或 CustomTrigger如果类型是“自定义”。

我怎么能用 Moshi 做到这一点?
我需要为我的 Rule 编写手动解析器吗?目的?

欢迎任何想法。谢谢

最佳答案

看看PolymorphicJsonAdapterFactory .

Moshi moshi = new Moshi.Builder() 
.add(PolymorphicJsonAdapterFactory.of(HandOfCards.class, "hand_type")
.withSubtype(BlackjackHand.class, "blackjack")
.withSubtype(HoldemHand.class, "holdem"))
.build();

请注意,它需要可选的 moshi-adapters依赖性。

关于json - 如何使用 Moshi 以两种不同的方式解析字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55760344/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com