使用Moshi反序列化可以是两种数据types之一的字段

我从OrientDB服务器收到一些JSON,如下所示:

{ ... "out": ..., "in": ..., ... } 

现在这两个字段可以是两种types之一: String和我自己的自定义对象(我们称之为一个Record )。 例如,对于一个请求我可能会收到:

 { ... "out": "#17:0", "in": { ... }, ... } 

对于另一个我可能会得到:

 { ... "out": { ... }, "in": "#18:2", ... } 

等等。 两者都可能是String ,都可能是Records ,一个可能是一个String ,另一个可能是一个Record ,等等。 现在,当我使用Moshi对这种JSON进行反序列化时,我有两个参数outin来保存它们各自键的值; 然而,因为这些值不是固定的数据types,所以说起来容易做起来难。

创建多个POJO(或“POKO”,我猜是因为我正在使用Kotlin)不起作用,因为这些对象可以在其他 JSON对象内部find。 我需要一个单一的对象,这些参数可以采取一个可变的数据types。 那么我该怎么做呢?

我需要在Moshi中编写一个自定义适配器来序列化/反序列化这些值吗? 如果是这样,我将如何去写一个可以分配一个特定的数据types取决于参数的值? 或者是有某种types的Kotlin类/函数/扩展函数,我可以find/写入,可以容纳两种可能的数据types?

如果它是相关的,我也使用Retrofit 2 + RxJava 2异步地进行HTTP调用,所以如果这些库中有任何数据types或函数有助于这样的事情,那么我就是耳熟能详。

即使任何人只能用Java来回答,因为我可以自己转换代码。 如果我错过了明显的事情,我提前道歉。