У меня есть модель json, в которой содержимое определенного атрибута зависит от другого атрибута. Что-то вроде этого:
"paymentMethod": "CREDIT_CARD",
"metaData": {
"cardType": "VISA",
"panPrefix": "",
"panSuffix": "",
"cardHolder": "",
"expiryDate": ""
}
Поэтому, когда paymentMethod
равно CREDIT_CARD
, объект metadata
будет содержать описанные атрибуты. В случае другого способа оплаты будут другие метаданные.
Я хочу справиться с этой ситуацией с расчетом на будущее. Что я пытаюсь сделать, так это не анализировать поле metadata
сразу, а оставить его каким-то образом «неразобранным», пока я не проанализирую поле paymentMethod
. Затем я взял метаданные и применил соответствующий подход к синтаксическому анализу.
Однако я не знаю, какой тип использовать для поля класса Scala для таких атрибутов с «поздним анализом». Я пробовал String
, JsonInput
, JObject
, и все они не подходят (либо не компилируются, либо не разбираются). Любые идеи, какой тип я могу использовать? Или, другими словами:
case class CreditCardMetadata(
cardType: String,
panPrefix: String,
panSuffix: String,
cardHolder: String,
expiryDate: String)
case class PaypalMetadata(...) // etc.
case class PaymentGatewayResponse(
paymentMethod: String,
metadata: ???)