2016-04-15 100 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或字典,不会消耗更多时间。 –