java - 将 GsonBuilder 转换为 Kotlin

标签 java android gson kotlin

有谁知道如何将这段代码转换成kotlin

GsonBuilder builder = new GsonBuilder();
builder.setLenient();
builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
        @Override
        public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
            if (json.getAsJsonPrimitive().isNumber()) {
                return new Date(json.getAsJsonPrimitive().getAsLong() * 1000);
            } else {
                return null;
            }
        }
    });
return builder.create();

然后,我尝试了

val builder = GsonBuilder()
builder.setLenient()
builder.registerTypeAdapter(Date::class.java,.........)
return builder.create()

.....我不知道如何转换代码

最佳答案

您询问的代码行可以转换为以下 Kotlin 代码:

builder.registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { 
    json, typeOfT, context ->
    if (json.getAsJsonPrimitive().isNumber())
        Date(json.asJsonPrimitive.asLong * 1000) else
        null
})

首先,Kotlin 支持 SAM conversion of lambdas to Java interfaces , 但语法与 Java 不同。那么,lambda 中的返回值与 Java 中的含义不同,应替换为 implicit returns。或 labeled returns .

关于java - 将 GsonBuilder 转换为 Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44050597/

相关文章:

android - 通过 Intent 传递 ArrayList

Android独立服务怎么来的?

java - Android java ImageButton 方法帮助

java - 使用GSON解析JSON得到 "content"

java - 在 Gson 自定义序列化中为 Double 字段分配空值

java - 用于查找具有随机中心的特定字符串的正则表达式

java - 编写我自己的包装器类并声明其元素数组

android - 即使在 android 中使用 TypeToken 时也会获取 com.google.gson.JsonSyntaxException?

java - Spring 不从属性文件加载 AWS-SNS 凭证

java - Spring JPA 中多对多单向关系的插入