小编cle*_*p6r的帖子

使用Gson和Kotlin 1.0 beta 4反序列化具有延迟属性的类

使用Gson,我想反序列化包含惰性属性的Kotlin类.

使用Kotlin 1.0 beta 4,在对象反序列化期间出现以下错误:

Caused by: java.lang.InstantiationException: can't instantiate class kotlin.Lazy
Run Code Online (Sandbox Code Playgroud)

使用Kotlin 1.0 beta 2,我曾经用@Transient annotaiton标记该属性,告诉Gson跳过它.使用beta 4,这是不可能的,因为注释会导致编译错误.

This annotation is not applicable to target 'member property without backing field'
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何解决这个问题.有任何想法吗?

编辑:lazy属性被序列化为JSON("my_lazy_prop$delegate":{}),但这不是我想要的,因为它是从其他属性计算的.我想如果我找到一种方法来阻止该属性被序列化,那么将会修复反序列化崩溃.

gson kotlin

23
推荐指数
3
解决办法
4836
查看次数

如何在Kotlin中使用Jackson JsonSubTypes注释

我正在尝试转换一些使用Jackson的@JsonSubTypes注释来管理多态的Java代码.

这是工作的Java代码:

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value = Comment.class, name = "CommentNote"),
    @JsonSubTypes.Type(value = Photo.class, name = "PhotoNote"),
    @JsonSubTypes.Type(value = Document.class, name = "DocumentNote")
})
public abstract class Note implements Identifiable {
    [...]
Run Code Online (Sandbox Code Playgroud)

这是我认为相当于的Kotlin代码:

JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "type")
JsonSubTypes(
    JsonSubTypes.Type(value = javaClass<Comment>(), name = "CommentNote"),
    JsonSubTypes.Type(value = javaClass<Photo>(), name = "PhotoNote"),
    JsonSubTypes.Type(value = javaClass<Document>(), name = "DocumentNote")
)
abstract class Note : Identifiable {
    [...]
Run Code Online (Sandbox Code Playgroud)

但是我在三个"JsonSubTypes.Type"行中得到以下错误:

Kotlin: …
Run Code Online (Sandbox Code Playgroud)

jackson kotlin

16
推荐指数
3
解决办法
4728
查看次数

如何使用Retrofit 2.0和新的MockRetrofit类来模拟服务?

使用Retrofit 1,我们用来模拟Web服务并模拟网络延迟,如下所示:

MockRestAdapter mockRestAdapter = MockRestAdapter.from(restAdapter);
return mockRestAdapter.create(MyService.class, new MyServiceMock());
Run Code Online (Sandbox Code Playgroud)

MyService服务接口在哪里(将响应作为Rx Observables返回),并且MyServiceMock是实现此接口的类.

在Retrofit 2.0.0-beta3中,有一个全新的模拟系统(参见:https://github.com/square/retrofit/pull/1343)尚未记录.当我尝试类似的东西,我得到:

MockRetrofit mockRetrofit = new MockRetrofit.Builder(retrofit).build();
BehaviorDelegate<AuthService> delegate = mockRetrofit.create(MyService.class);
Run Code Online (Sandbox Code Playgroud)

我该如何转接电话MyServiceMock

java rx-java retrofit2

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

kotlin ×2

gson ×1

jackson ×1

java ×1

retrofit2 ×1

rx-java ×1