macmedan
06/26/2017, 2:18 PMsalomonbrys
06/26/2017, 2:27 PMmacmedan
06/26/2017, 2:32 PMsalomonbrys
06/26/2017, 2:37 PMsalomonbrys
06/26/2017, 2:38 PMmacmedan
06/28/2017, 2:49 AMTypeAdapters
things started working. Just me not understanding what was happening.ksaltykov
08/03/2017, 7:12 AM[{"type": "photo", "photo": {"id": 123}}, {"type": "video", "video": {"id": 321}}]
ksaltykov
08/03/2017, 7:20 AMsalomonbrys
08/05/2017, 9:46 AMcarlbenson
10/05/2017, 3:59 PMjson
with the following structure
{
"marketId1": {
"services": {
"savings": true,
"funds": true
},
"paymentMethod": "autogiro",
"withdrawalMethod": "autogiro",
"bankProvider": {
"name": "bank1",
"offersMarketing": false
},
"fundsProvider": {
"name": "bank1 funds"
},
"onboarding": {
"kyc": "embeddedInWebview",
"strongAuth": "embeddedInWebview"
},
"strongAuthenticationMethod": {
"name": "strongAuth1",
"method": "externalApp",
"externalAppURL": "scheme1://"
}
},
"marketId2": {
"services": {
"savings": true
},
"paymentMethod": "debitCard",
"withdrawalMethod": "bankAccount",
"bankProvider": {
"name": "bank2",
"offersMarketing": false
},
"onboarding": {
"kyc": "preOnboarding",
"strongAuth": "preOnboarding"
},
"strongAuthenticationMethod": {
"name": "strongAuth2",
"method": "internalBrowser"
}
}
}
carlbenson
10/05/2017, 4:01 PMCapabilities
object using kotson delegates like so
class Capabilities(val obj: JsonObject, market: String) {
val hasSavings by obj[market]["services"].byBool("savings")
internal val hasFundsMaybe by obj[market]["services"].byNullableBool("funds")
val paymentMethod by obj[market].byString("paymentMethod")
val withdrawalMethod by obj[market].byString("withdrawalMethod")
val bankProviderName by obj[market]["bankProvider"].byString("name")
val fundProviderName by obj[market]["fundsProvider"].byString("name")
val onboardingKyc by obj[market]["onboarding"].byString("kyc")
val strongAuth by obj[market]["onboarding"].byString("strongAuth")
val strongAuthMethod by obj[market]["strongAuthenticationMethod"].byString("method")
}
val Capabilities.hasBankAccountWithdrawalMethod: Boolean get() = withdrawalMethod == "bankAccount"
val Capabilities.isOnboardingKycEmbedded: Boolean get() = onboardingKyc == "embeddedInWebview"
val Capabilities.isStrongAuthEmbedded: Boolean get() = strongAuth == "embeddedInWebView"
val Capabilities.isPaymentMethodDebitCard: Boolean get() = paymentMethod == "debitCard"
val Capabilities.isStrongAuthMethodInternal: Boolean get() = strongAuthMethod == "internalBrowser"
val Capabilities.hasFunds: Boolean get() = hasFundsMaybe == true
carlbenson
10/05/2017, 4:02 PMmarketId2
I cannot create the object, since it does not contain a fundsProvider
object at all …carlbenson
10/05/2017, 4:03 PMval Capabilities.hasFunds: Boolean get() = hasFundsMaybe == true
and
internal val hasFundsMaybe by obj[market]["services"].byNullableBool("funds")
carlbenson
10/05/2017, 4:14 PMCapabilities
object even for marketId2
?carlbenson
10/05/2017, 4:25 PMval fundProviderName: String get() = obj[market].get("fundsProvider").nullObj?.get("name")?.nullString ?: ""
carlbenson
10/05/2017, 4:32 PMCapabilities
class
val fundProvider by obj[market].byNullableObject("fundsProvider")
and as an extension property
val Capabilities.fundsProviderName: String get() = fundProvider?.get("name").nullString ?: ""
carlbenson
10/05/2017, 4:32 PMmkporwit
11/26/2017, 7:17 AMdata class DocumentMetadata(val documentId: String, val documentType: DocumentType = DocumentType.SKETCH, val owners: MutableSet<String> = mutableSetOf())
and the following string representation:
{
"documentId": "__healthCheck",
"documentType": "SKETCH"
}
I'm trying to just do val meta:DocumentMetadata = Gson().fromJson(metaString)
, but owners comes up as null
in the deserialized type, instead of the expected empty set of strings. Is there some setting to get the default data class values for any elements not in the input string, or will I have to do a TypeAdapter
for this?xxxifan
03/22/2018, 5:48 AMxxxifan
03/22/2018, 5:49 AMsalomonbrys
03/28/2018, 10:29 AMsalomonbrys
03/28/2018, 10:29 AMsalomonbrys
03/28/2018, 10:30 AMMOZGIII
04/09/2018, 1:13 AMMOZGIII
04/09/2018, 1:33 AMmkporwit
04/09/2018, 6:08 AMmkporwit
04/09/2018, 6:08 AMmkporwit
04/09/2018, 6:09 AMIan
12/09/2018, 3:28 PMCaleb Hulbert
08/18/2021, 5:27 PMgson
with kotlin, when using delegates. When deserializing and object. the delegate and the field it refers to are deserialized by reflection, and so they end up referring to different objects (i.e. using the delegate to `setValue`/`getValue` no longer updates the field it should be updating).
I was wondering if Kotson
has a was around this? The only way I have had luck so far was creating a custom deserializer for every class which uses delegates, but that's not really ideal.