【发布时间】:2015-07-13 10:37:30
【问题描述】:
我有一个 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: ???)
【问题讨论】: