2015-02-09 61 views
0

我獲取從JSON文件&字符串想將其轉換爲鍵值對。C# - JSON以核心價值和反之亦然

我正在使用JSON.NET。

我知道我可以使用反序列化一個列表:

List<JsonClass> jsonFileComments = JsonConvert.DeserializeObject<List<JsonClass>>(json); 

我可以使用反序列化數組:

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

但正如我的JSON字符串包含列表中只有一個文件&陣列。該序列是這樣的:

{ 
    List, 
    List, 
    List, 
    Array, 
    List, 
    Array, 
    List 
} 

你能告訴我如何使用單一方式反序列化它。

另一種方式是,我需要分離出陣列&工作單獨上。再次序列化時,我需要處理那些東西。

+0

大多數時候,你會反序列化JSON字符串轉換成具體的C#類型。你能展示你正在使用的JSON嗎? – 2015-02-09 14:11:29

回答

1

好辦法之一是使用dynamic(該類型是靜態類型,但dynamic類型的對象繞過靜態類型檢查。)?

dynamic d = JObject.Parse("{number:1000, str:'string', array: [1,2,3,4,5,6]}"); 

Console.WriteLine(d.number); 
Console.WriteLine(d.str); 
Console.WriteLine(d.array.Count); 
+0

Thanks Margus ...這個動態關鍵字解決了我的問題... – 2015-02-09 15:25:17

+0

嗨Margus,這個動態關鍵字在Windows應用程序中工作,但是當我去了Web應用程序,我真的想要使用它時,它會拋出錯誤說「動態操作只能在同質AppDomain中執行。「....任何建議? – 2015-02-11 13:09:20

+0

@SanjayAdsure您是否在pre .net4.0上運行您的應用程序?您可以嘗試將其加載到另一個應用程序域(http://www.bryancook.net/2010/02/running-code-in-separate-appdomain.html) – Margus 2015-02-11 13:32:55

0

希望這段代碼塊有所幫助。我假設你有JSON對象&你需要通過它來解析:

Newtonsoft.Json.Linq.JObject o = Newtonsoft.Json.Linq.JObject.Parse(yourJsonData); 
Newtonsoft.Json.Linq.JArray textArray = (Newtonsoft.Json.Linq.JArray)o["yourArray"]; 
if (textArray.Count > 0) 
{ 
for (int i = 0; i < textArray.Count; i++) 
{//do something} 
}