2015-05-09 28 views
1

在這裏也有幾個帖子在其他論壇,我發現這段代碼引用了轉向JSON對象到一個DataTable:轉換JSON對象到DataTable中

DataTable dt = (DataTable)JsonConvert.DeserializeObject(json, (typeof(DataTable))); 

我不能得到這個工作。它總是拋出一個JsonSerializationException。我錯過了什麼嗎?

這是簡單的例子來說明錯誤:

JObject query = new JObject(); 
JObject results = new JObject(); 

results.Add("Name", "Blue Umbrella"); 
results.Add("Price", 100); 

query.Add("results", results); 

DataTable dt = (DataTable)JsonConvert.DeserializeObject(query.ToString(), (typeof(DataTable))); 

我做了什麼錯?

+0

我會看看的字符串值是什麼,是由'query.ToString(生產)和'將其與您見過的其他例子進行比較。 –

+0

爲什麼要將其轉換爲數據表?爲什麼不轉換爲[POCO](http://en.wikipedia.org/wiki/Plain_Old_CLR_Object)? – mason

回答

5

使用類似:

JArray array = new JArray(); 

{ 
    JObject row = new JObject(); 

    row.Add("Name", "Blue Umbrella"); 
    row.Add("Price", 100); 

    array.Add(row); 
} 

{ 
    JObject row = new JObject(); 

    row.Add("Name", "Green Umbrella"); 
    row.Add("Price", 200); 

    array.Add(row); 
} 

DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString()); 

「容器」 必須是JArray

下次您遇到類似問題時,如@Dr所示。 Wily的,只需嘗試序列化的東西:

var dt = new DataTable(); 
dt.Columns.Add("Name"); 
dt.Columns.Add("Price"); 

var row = dt.NewRow(); 
row["Name"] = "Blue Umbrella"; 
row["Price"] = 100; 
dt.Rows.Add(row); 

row = dt.NewRow(); 
row["Name"] = "Green Umbrella"; 
row["Price"] = 200; 
dt.Rows.Add(row); 

string serialized = JsonConvert.SerializeObject(dt); 

並查看其格式爲:

[{"Name":"Blue Umbrella","Price":"100"},{"Name":"Green Umbrella","Price":"200"}] 
+0

如何將此json字符串更改爲Datatable C#{ 「apple.com」:{「status」:「regthroughothers」,「classkey」:「domcno」}, 「asdfgqwx.com」:{「status」:「available 「,」classkey「:」domcno「}, 」microsoft.org「:{」status「:」unknown「}, 」apple.org「:{」status「:」unknown「}, 」microsoft.com 「:{」status「:」regthroughothers「,」classkey「:」domcno「}, 」asdfgqwx.org「:{」status「:」unknown「} } – user3786581

+0

@ user3786581我不認爲你可以:鍵名稱canges,''apple.com''變成'「asdfgqwx.com」'變成'「microsoft.com」'這更像是一個'Dictionary '。這個問題很複雜,你應該提出一個完整的問題。 – xanatos

+0

好的。這裏是我的完整問題[鏈接](http://stackoverflow.com/questions/35482580/how-to-convert-json-string-into-datatable-in-asp-net-with-c-sharp) – user3786581