我有一個類:如何在反序列化之前將json對象轉換爲自定義類型?
public class LineItemWithDetails
{
public LineItem LineItem { get; set; }
public object Details { get; set; }
}
而這需要在從JavaScript傳遞一個JSON對象一個Web服務方法,和反序列化:
[WebMethod(true)]
public string SaveLineItemDetails(object details, int categoryId, int lineItemId)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
LineItemWithDetails lineItem = serializer.Deserialize<LineItemWithDetails>(details.ToString());
}
參數「細節」,看起來是這樣的: details.Details [「Name」] =「tessa」; details.Details [「PositionTitle」] =「whatever」;
我的問題是,我想在反序列化之前將LineItemDetails類中的Details屬性轉換爲BudgetPersonnel(請參見下文),以便將json對象的值分配給BudgetPersonnel屬性。 BudgetPersonnel只是一種類型的示例,還有其他幾種。要轉換的是由webservice方法中的categoryId參數確定的。我已經通過了很多關於通用鑄造的教程,並且他們工作。但是,我不明白如何在反序列化之前做到這一點。上面SaveLineItemDetails中列出的代碼反序列化,但Details屬性顯然只是一個對象,而不是BudgetPersonnel類型。
例子:
public BudgetPersonnel(string name, string positionTitle)
{
this.Name = name;
this.PositionTitle = positionTitle;
}
謝謝回答!我認爲我的問題更多的是想解決如何在反序列化之前將LineItemDetails中的Details參數轉換爲我的自定義類型。 BudgetPersonnel只是我擁有的幾種類型之一,它們作爲categoryId傳遞給webservice方法。我稍微更新了我的問題,希望更清楚。 – tessa
如何投射尚未反序列化的對象?解決方法是將JSON字符串反序列化爲「最適合」的類型,然後執行轉換。正如我在我的回答中所建議的那樣,編寫自己的反序列化代碼會更有效且不易出錯。 –