2012-10-31 65 views
0

我想找到一種方法來序列化和反序列化一個數據表的數據集到JSON和從JSON回到數據集/數據表使用JSON.NET,但是所有我發現的示例和示例只是從數據集或數據表序列化爲JSON,從來沒有兩種方式。我們有一個處理XML序列化數據集和數據表的系統,我們需要仍然保留這種格式,但允許某些UI視圖將數據呈現爲JSON。如何執行序列化和反序列化的數據表往返JSON

數據可以有空值,這是有效的。

任何幫助將不勝感激。

例(單程序列化):
http://www.west-wind.com/weblog/posts/2008/Sep/03/DataTable-JSON-Serialization-in-JSONNET-and-JavaScriptSerializer

+1

本帖](http://stackoverflow.com/a/12208273/102937)說,最新JSON.NET庫有您所需要的能力。 –

+0

非常感謝大家,我不知道更新版本的JSON.NET將允許DataTable轉換。我只需要創建一個定製版本的Newtonsoft.Json.Converters.DataTableConverter,它允許特定的複雜類型作爲列數據類型。 – jon333

+0

[如何在Java中以JSON和XML格式序列化/反序列化?](http://stackoverflow.com/questions/5201593/how-to-serialize-deserialize-in-both-json-and-xml -format-in-java) –

回答

2

這一切都取決於你如何要管理的反序列化。就個人而言,我喜歡去與基於LINQ的方法,其在工作方式如下:

// Get the children of the JSON result (This example is from my own code, 
// in which case I have one big "result" node which contains a bunch of 
// children that I am interested in deserializing. 
var jsonChildren = JObject.Parse(response)["results"].Children(); 

// Now use a LINQ statement to deserialize. For example... 
var jsonResults = jsonChildren.Select(x => 
{ 
    new MyObject 
    { 
     Prop1 = x["Var1"], 
     Prop2 = x["Var2"], 
    } 
}); 

什麼這一切歸結爲是,你使用JSON孩子IEnumerable的,就像您鍵值對的數組,使用方括號語法訪問必要的後代。 LINQ只是讓事情變得更清潔。

更新

不知道這是否適用於你的情況,但這裏是關於這個問題的一個有趣的文章,使用動態對象http://www.west-wind.com/weblog/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing