我有一个json模型,其中某些属性的内容取决于其他属性。事情是这样的:json4s部分解析json
"paymentMethod": "CREDIT_CARD",
"metaData": {
"cardType": "VISA",
"panPrefix": "",
"panSuffix": "",
"cardHolder": "",
"expiryDate": ""
}
所以当paymentMethod
等于CREDIT_CARD
,在metadata
对象将作为描述包含属性。如果使用其他付款方式,则会有不同的元数据。
我想以面向未来的方式处理这种情况。我试图做的是不立即解析metadata
字段,但保持它以某种方式“unparsed”,直到我解析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: ???)
嘿,谢谢,你的回应使我走上了正轨。我只需要一些临时的解决方案,所以我贴我自己的答案基于你的,就说明了这可以用更少的代码来实现。 对于其他人读这篇文章,这个答案是正确的道路要走,但如果你需要的东西很快,我的答案会工作,太。 – Haspemulator