簡體   English   中英

如何在JSON中指定子類類型(在REST Web服務中)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM