C# Json.Net反序列化到JObject或Dictionary是否更快?
我试图为一个Json建模以进行反序列化,其中一个属性是一个具有一长串键和值的对象C# Json.Net反序列化到JObject或Dictionary是否更快?,c#,performance,json.net,C#,Performance,Json.net,我试图为一个Json建模以进行反序列化,其中一个属性是一个具有一长串键和值的对象 { "key1": "value1", "key2": "value2", //this guy "longlist": { "6060": 123, "6061": 664, ... "6200": 43 } } 在我的应用程序中,我不需要查看longlist,我只希望能够将一个longlist附加到另一个 考虑到反序列化
{
"key1": "value1",
"key2": "value2",
//this guy
"longlist": {
"6060": 123,
"6061": 664,
...
"6200": 43
}
}
在我的应用程序中,我不需要查看longlist
,我只希望能够将一个longlist
附加到另一个
考虑到反序列化的性能,将长列表
建模为字典
还是作为作业对象
编辑:长列表中键的顺序无关紧要。公共类RootObject
public class RootObject
{
public string key1 { get; set; }
public string key2 { get; set; }
public Dictionary<string, int> longlist { get; set; }
}
{
公共字符串key1{get;set;}
公共字符串key2{get;set;}
公共字典长列表{get;set;}
}
JObject jsonResponse=JObject.Parse(r)
JObject-objResponse=(JObject)jsonResponse[“longlist”];
RootObject _Data=Newtonsoft.Json.JsonConvert.DeserializeObject(jsonResponse.ToString());
foreach(KeyValuePair kvp in_Data.longlist)
{
WriteLine(string.Format(“Key:{0}值:{1}”,kvp.Key,kvp.Value));
}
fiddle:我不会担心性能,直到诚实成为应用程序中的一个问题。如果您真的有兴趣了解这两种方法,您可以自己确定时间。这可能取决于数据,所以自己测试会给你最好的答案。Eric Lippert的相关建议:我不知道哪一个会更快,你只需要自己测量。然而,
Dictionary
将具有更小的内存占用,因为int
值不会被装箱,并且因为它只是单键(按名称)而不是双键()。实际上,我更感兴趣的是为什么一个模型可能比另一个模型(如@dbc的答案)性能更好,并以这种方式学习一些东西。另外,如果有人已经知道一种方法肯定是更好的方法,那么我为什么要花时间来衡量这两种方法呢?反序列化到JObject或Dictionary中,这不是更多的时间消耗。
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));
}