[英]How to specify subclass types in JSON (in a REST web service)
我有一個.NET REST Web服務,該服務將JSON數據發送到各種移動應用程序。
我正在測試一個新方法,該方法返回的對象可能是多個子類之一,例如,在下面的偽代碼中它可能返回:
wallet: {
cards: [ { name: 'mastercard', ...},
{ name: 'visacard', ...},
{ name: 'photocard', ...}
]
}
其中每張卡都是卡的子類,例如
public abstract class Card
{
...
}
public class CreditCard : Card
{
...
}
public class ConcessionCard : Card
{
...
}
public string webServiceMethodGetWallet()
{
myWallet = new Wallet();
CreditCard visaCard = new CreditCard();
CreditCard masterCard = new CreditCard();
ConcessionCard photoCard = new ConcessionCard();
myWallet.cards.AddAll(visaCard, masterCard, photoCard);
return JSON.Serialize(myWallet);
}
我在多個平台(iOS,Android和Windows Phone)上反序列化此數據。
在反序列化時,讓客戶端應用知道每個對象使用哪個類的好策略是什么? 例如,在上面的示例中,客戶端應用程序如何在不檢查所有字段的情況下判斷是創建類型為CreditCard
還是ConcessionCard
類?
請記住,我需要在Objective C,Java和.NET中反序列化。
有沒有一種“正常”的方式來做到這一點?
如何將一個集合在JSON中拆分為單獨的數組(強類型)?
像這樣:
wallet: {
CreditCards: [ { name: 'mastercard', ...},
{ name: 'visacard', ...}
],
ConcessionCards: [ { name: 'photocard', ...}
]
}
這樣,如果不存在任何內容,則反序列化器會將其保留為空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.