2013-12-09 105 views
0

我試圖解析一個已經存在的源,並且一直在使用json2csharp.com來生成這些類。JSON .NET C#動態解析

我正在使用Newtonsoft來做到這一點。

我的一些數據正在轉換爲類,當它接近Dictionary時。

例如: {

「項」:{ 「1061」:{ 「計數」: 「1」, 「IN_USE」: 「0」 }, 「1065」:{ 「計數」:「1」, 「IN_USE」:「0」 } } }

我想有一個與串計數下根這樣一類物品,和字符串IN_USE以及可能的字典該詞典項目或只是一個項目列表,a nd把ID放在對象本身中。

如果我的大部分對象被正確解析,我該如何手動構建這部分?是否通過將對象拉下爲動態來迭代項目,並手動加載它?什麼是最好的方法來做到這一點?

感謝您的幫助!

+0

你可以試試[這種做法](HTTP://計算器。 com/questions/1207731/how-can-i-deserialize -json-to-a-simple-dictionarystring-string-in-asp-net)並修改它以適合你的需要。 – ChrisK

回答

2

您可以創建一個類爲類項目:

public class Item 
{ 
    public string count { get; set; } 
    public string in_use { get; set; } 
} 

,然後在字典中讀出的值:

string json = @"{ 
    ""1061"":{ 
     ""count"":""1"", 
     ""in_use"":""0"" 
    }, 
    ""1065"":{ 
     ""count"":""1"", 
     ""in_use"":""0"" 
    } 
}"; 

Dictionary<string, Item> values = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json); 
+0

這種方法是合理的,但我應該詳細說明。上面的JSON嵌套在其他JSON對象中,所以我需要提取這部分JSON來解析它。有沒有一種方法呢?我可以使用正則表達式或堆棧從字符串解析它...我希望有更優雅的東西。 – pcaston2

+0

你能提供完整的json嗎?你可以創建一個更復雜的類結構來滿足你的需求。 – fcuesta

+0

有多個JSON我解析有類似的問題,我寧願不發佈他們。我已經在JSON中包含了根和元素「items」。項目旁邊還有其他元素,但我已排除它們。我應該讓項目成爲類型的Dictionary嗎?它會自動將子元素解析爲一個Item並以這種方式填充它嗎? – pcaston2