2013-05-02 26 views
0

我在這裏試過一些例子,但是我把頭髮撕掉了。將一個孩子反序列化成一個對象

我做了一個查詢,它返回JSON,裏面的JSON有很多散列,例如。

{ "gjwiegjeigj": { ....}, "gjeeigjwoeigj": {...} ... }

欲通過每個這些循環中,並將內容物反序列化爲一個對象。

我已經創建了對象myObject,它具有所有的字段,但是我被禁止了反序列化。

我可以使用JsonConvert.DeserializeObject直接從基礎對象進行反序列化,但我不能這樣做,我需要循環並將其實現給子代。

我想要一個自定義對象的數組,其中包含從Json獲取的所有字段,因此我不關心每個對象的標題(垃圾哈希)。

任何想法?我知道我可以循環,這給了我很多JTokens,但那是我卡住的地方。

+1

你不喜歡什麼[這裏](http://stackoverflow.com/a/16339492/1906557)? – I4V 2013-05-02 14:40:15

+0

這個問題是關於.NET 4.5 JSON而不是JSON.NET,但是我遇到的關鍵問題是我不知道我是反序列化的字段的名稱。我不能做[「人物」],因爲這個字段被稱爲「gjwiegjoawigj」一些隨機的名字。 – NibblyPig 2013-05-02 14:41:36

+0

你有什麼嘗試?向我們展示一些真實的代碼,並告訴我們真正的問題是什麼。 – ashes999 2013-05-02 15:06:15

回答

0

所以我想通了,基本上是從集合獲得JToken S的是什麼,我是說我通過.Children()我的JSON對象上迭代,我可以無論是將它轉換爲一個JProperty,做.Name得到的名稱或.Value獲得的價值,或者我能直接反序列化爲一個對象,基本上是這樣的:

MyObject record = (MyObject)JsonConvert.DeserializeObject(myRow.Children().First().ToString(), typeof(MyObject), settings);

然後我不知道需要知道我反序列化的財產的名稱。

0

編輯:再次讀你的問題,你提到知道和不知道所有的領域。這聽起來像你真的不知道JSON字符串將包含什麼字段。

對於這樣的情況,我建議你使用dynamic - 這是它發光的地方。如果你知道所有的字段名稱,你的類應該反序列化,沒有任何問題。

你有什麼試過?向我們展示一些真實的代碼,以及真正的例外或問題。

反序列化到動態對象的名單很簡單:

dynamic toReturn = JsonConvert.DeserializeObject<List<dynamic>>(rawJson);

您將獲得動態對象的名單。您可以戳它的領域,你想:

Console.WriteLine(toReturn.First().gjwiegjeigj);

+0

如果不知道字段名稱,該怎麼辦? – NibblyPig 2013-05-02 14:47:59

+0

@SLC看到這個答案:http://stackoverflow.com/a/2686386/210780嘗試'toReturn.GetType()。GetProperties()' – ashes999 2013-05-02 14:55:09

+0

你不明白我的問題 – NibblyPig 2013-05-02 14:57:38

相關問題