--- 1. single element: discriminator present --- {"paymentType":"credit_card","amountDue":99.99,"cardNetwork":"VISA","cardNumberLastFour":"4242","paymentId":1} --- 2. BROKEN: writeValueAsString(List) drops paymentType --- [{"amountDue":99.99,"cardNetwork":"VISA","cardNumberLastFour":"4242","paymentId":1},{"amountDue":250.0,"bankAccountIban":"GB29NWBK60161331926819","bankName":"National Bank","paymentId":2}] --- 3. FIX A: writerFor(TypeReference) --- [ { "paymentType" : "credit_card", "amountDue" : 99.99, "cardNetwork" : "VISA", "cardNumberLastFour" : "4242", "paymentId" : 1 }, { "paymentType" : "bank_transfer", "amountDue" : 250.0, "bankAccountIban" : "GB29NWBK60161331926819", "bankName" : "National Bank", "paymentId" : 2 } ] --- 4. FIX B: a typed array carries its component type --- [{"paymentType":"credit_card","amountDue":99.99,"cardNetwork":"VISA","cardNumberLastFour":"4242","paymentId":1},{"paymentType":"bank_transfer","amountDue":250.0,"bankAccountIban":"GB29NWBK60161331926819","bankName":"National Bank","paymentId":2}]