2017-02-15 71 views
0

我用下面的JSON字符串反序列化的數據表爲什麼我不反序列化Json到DataTable?

string json = "[{\"clientID\":\"1788\",\"projectID\":\"19\"}]"; 
var data = (DataTable)JsonConvert.DeserializeObject(json, (typeof(DataTable))); 

但我得到了下面的異常

enter image description here

,如果我試圖用已成功反序列化列表進行反序列化。

var dat = JsonConvert.DeserializeObject<List<Client>>(json); 

但我想使用DataTable反序列化。

請建議我如果我錯過了什麼提前

+0

請不要發佈異常的屏幕截圖,但文本,包括堆棧跟蹤。在「查看詳細信息...」中單擊時可以看到。 – Sentry

+0

此對象是否使用DataTable對象作爲源進行序列化?否則它將沒有正確的序列化格式將其轉換爲DataTable – Carles

+0

您無法直接將JSON轉換爲system.DataTable格式,您需要將類設置爲相同。 – user7417866

回答

0

謝謝你不能反序列化List<T>DataTable。相反,您可以先獲得List<T>,然後將其轉換爲DataTable

這:Converting a List to a DataTable可能是一個很好的起點。

從文章的代碼:

從文章的通用代碼,你可以這樣做:

var dat = JsonConvert.DeserializeObject<List<Client>>(json); 

,然後轉換:

var dataTable = dat.ToDataTable(); 
1

你需要爲你的JSON對象創建類,在我的例子中,我可以給你舉例..

public class TagValueConfig 
{ 
    public string DisplayName { get; set; } 
    public int MinTagValue { get; set; } 
    public int MaxTagValue { get; set; } 
} 

然後,你可以反序列化到對象數組

TagValueConfig[] ObjTagConfigData = JsonConvert.DeserializeObject<TagValueConfig[]>(ConfigTagString); 

,一旦你得到反序列化陣列,將其轉換爲數據表格式..

或使用擴展方法。

希望這會有所幫助.. :)