![](/img/trans.png)
[英]How do I pass a list of objects from a WCF service to an ASP.NET web app
[英]How do I send a list of different objects back as a JSON object through a .NET web service?
假設我有以下模型:
AnimalModel
DogModel : AnimalModel
CatModel : AnimalModel
ElephantModel : AnimalModel
我想在Web服務中將List作為JSON對象返回...如何做到最好?
請記住,通過上面的排序,ElephantModel繼承自AnimalModel,但顯然包含了AnimalModel所沒有的其他類成員。 (即TrunkSize),並且我認為這是導致錯誤的原因。
現在我有:
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "?query={query}")]
List<AnimalModel> Animals (string query);
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "?query={query}")]
ElephantModel Elephant (string query);
如果我只是制作一個類似List的函數並嘗試將其發送回去,那似乎很合適。 如果我首先將其序列化為JSON字符串,則它將傳遞該字符串-但隨后我必須再次對其進行解析。
但是,如果我只是為ElephantModel或CatModel進行此操作,它將非常完美! 無需序列化,在另一端也無需解析...就像冠軍。
當我嘗試發送子模型從中繼承的模型列表時,它會中斷。 但是,如果我可以將其序列化為正確的JSON字符串,發送並接收該字符串以進行解析,那么我必須做得更好!
我怎樣才能做到這一點?
我建議使用Json.NET 。 序列化和反序列化非常簡單。
//your object
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
//serialize it
string json = JsonConvert.SerializeObject(product);
//will look like this :
//{
// "Name": "Apple",
// "Expiry": new Date(1230422400000),
// "Price": 3.99,
// "Sizes": [
// "Small",
// "Medium",
// "Large"
// ]
//}
//on the 'other end' you just deserialize it with one line of code!
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.