2014-02-17 57 views
0

我正在使用一個列表來處理JSON字符串,該字符串可以正常工作,如下所示。我想要做的是使這些處理轉換的方法完全通用,以便我可以將它們用於多個JSON字符串。在C#中使用變量作爲列表類型

這是我現在的代碼片段,因爲它代表。

public class GetPerson 
{ 
    public string fooName { get; set; } 
    public string fooAddress { get; set; } 
    public string fooPosition { get; set; } 
} 
public class GetPosition 
{ 
    public string fooTitle { get; set; } 
    public string fooDepartment { get; set; } 
    public string fooSalary { get; set; } 
} 

    private static List<GetPerson> ConvertToList(string jsonString) 
    { 
     List< listJson = new List<JsonObject>(); 
     listJson = (List<GetPerson>)JsonConvert.DeserializeObject<List<GetPerson>>(jsonString); 
     return listJson; 
    } 

這僅僅是一個快速出樣,但List<GetPerson>是我需要的是通用的,因此它可以重複使用,因爲它代表了爲getPosition顯然不會有這方面的工作,因爲我想能夠遍歷我的代碼,相應地改變類型。

有沒有辦法將變量分配爲類型?我看到另一個關於這個問題的問題,但沒有詳細說明。或者有另一種方式可以實現這一目標嗎?

在此先感謝。

回答

0

可以使用泛型有助於使ConvertToList功能可重複使用於不同類型的

private static List<T> ConvertToList<T>(string jsonString) 
{ 
    return (List<T>)JsonConverty.DeserializeObject<List<T>>(jsonString(); 
} 

現在,您可以同時使用GetPersonGetPosition作爲泛型類型調用它。

var listOfPeople = ConvertToList<GetPerson>(personJson); 
var listOfPositions = ConvertToList<GetPosition>(positionJson); 

您可以在MSDN上閱讀更多關於仿製藥的信息。

而且,如果所有你想要做的是[德]序列化JSON,你可能要考慮,像JSON.netJilServiceStack.Text,所有這一切都建立在功能做一個第三方庫你正在努力去做。

+0

真棒謝謝您的回答。我知道通用集合,但不知道如何正確實現它們。我也使用Json.net來處理Json到列表的轉換。 – Corey

1

非常簡單。你只需要做出ConvertToList()通用,並通過所需的類作爲Type Paramter在ConvertToList()

private static List<T> ConvertToList<T>(string jsonString) 
{ 
    var listJson = new List<JsonObject>(); 
    listJson = (List<T>)JsonConvert.DeserializeObject<List<T>>(jsonString); 
    return listJson; 
} 

var personList = ConvertToList<GetPerson>(jsonString); 
var positionList = ConvertToList<GetPosition>(jsonString);