Kotlin

2017-05-18 23 views
6

में GsonBuilder कन्वर्ट किसी को भी कैसे 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() 

..... मैं यह पता लगा नहीं कर सकते कि कन्वर्ट करने के लिए कोड

+0

आपको क्या त्रुटि मिल रही है? – iagreen

उत्तर

8

कोड लाइन है कि आप के बारे में निम्नलिखित 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 का समर्थन करता है, लेकिन वाक्य रचना जावा के लिए अलग है। फिर, लैम्बडास के अंदर लौटने के लिए जावा में इसका अलग अर्थ होता है, और implicit returns या labeled returns के साथ प्रतिस्थापित किया जाना चाहिए।

+0

धन्यवाद माइक .. tq .. – ZeroOne

0

धन्यवाद, मैं पहले से ही यह समझ से बाहर .. यह, किसी भी विशेषज्ञ टिप्पणी कर सकते हैं यह करने के लिए सही तरीका है

@Provides 
    @Singleton 
    fun provideGson(): Gson? { 
     val builder = GsonBuilder() 
     builder.setLenient() 
     builder.registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { json, typeOfT, context -> 
      if (json.asJsonPrimitive.isNumber) { 
       Date(json.asJsonPrimitive.asLong * 1000) 
      } else { 
       null 
      } 
     }) 
     return builder.create() 
    } 
0
val gson = GsonBuilder().apply { 
     setLenient() 
     registerTypeAdapter(Date::class.java, 
       JsonDeserializer<Date> { json, typeOfT, context -> 
        if(json.asJsonPrimitive.isNumber) { 
         Date(json.asJsonPrimitive.asLong * 1000) 
        } else { 
         null 
        } 
       }) 
    }.create()