2016-04-15 43 views
0

我想模擬一個反序列化的Json,其中一個屬性是一個長鍵和值列表的對象。Json.Net反序列化JObject或Dictionary是否更快?

{ 
    "key1": "value1", 
    "key2": "value2", 

    //this guy 
    "longlist": { 
     "6060": 123, 
     "6061": 664, 
... 
     "6200": 43 
    } 
} 

在我的申請,我也不需要往裏longlist,我只希望能夠追加一個longlist到另一個。

考慮到每個解串行的性能,對我來說,將longlist作爲Dictionary<string, int>還是JObject對我來說更好嗎?

編輯:密鑰的順序在longlist並不重要。

+1

我不會擔心性能,直到它變成你的應用程序的問題,說實話 –

+2

你可以在時間兩者,如果你在找出真正感興趣的接近自己。這可能取決於數據,所以自己測試它會給你最好的答案。 – itsme86

+1

Eric Lippert的相關建議:[*如果你有兩匹馬,並且你想知道哪一匹比賽更快,那麼**比賽你的馬**。*](https://ericlippert.com/2012/12/ 17/performance-rant /) – dbc

回答

0
public class RootObject 
{ 
    public string key1 { get; set; } 
    public string key2 { get; set; } 
    public Dictionary<string, int> longlist { get; set; } 
} 

JObject jsonResponse = JObject.Parse(r);

JObject objResponse = (JObject)jsonResponse["longlist"]; 
RootObject _Data = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(jsonResponse.ToString()); 

foreach (KeyValuePair<string, int> kvp in _Data.longlist) 
{ 
    Console.WriteLine(string.Format("Key: {0} Value: {1}", kvp.Key, kvp.Value)); 
} 

小提琴:https://dotnetfiddle.net/9ZyKwN

+0

反序列化成JObject或字典,不會消耗更多時間。 –