【发布时间】:2018-06-06 23:37:55
【问题描述】:
我们有一个非常大的平面 C# 对象(20000 个属性),我们正在使用 Newtonsoft JSON Deserializer 将 JSON 对象反序列化到其中。
由于反射,目前需要 3 分钟以上。
我们正在寻求实现一个程序化的手动反序列化过程,以减少这个时间。
我们已经阅读了很多关于这方面的资源,这些资源给出了关于如何进行手动反序列化的一般概念,但没有解释如何以编程方式处理它。
例如
http://www.tomdupont.net/2016/01/how-to-optimize-jsonnet-serialization.html
How to improve JSON deserialization speed in .Net? (JSON.net or other?)
例如,我们有一个具有 20000 个属性且没有子类/对象属性的大型购买对象,实际上是 20000 多个字符串。它们当前从 JSON 映射的方式是我们在属性本身上有一个 JSON 属性,它对应于 JSON 本身的属性。
使用当前的方法反射非常慢,我们正在寻找正确的方向,以编程方式执行此操作。
【问题讨论】:
-
您链接到的问题建议使用JsonReader/JsonWriter;你试过了吗?
-
是的,我们已经尝试过了,它产生的结果非常微不足道,只节省了大约 5 秒。问题更多在于反射而不是大型对象堆。
-
链接的答案中没有任何反映。
-
如果它只是一个具有一堆字符串属性的对象,将其反序列化为
Dictionary<string, string>会更快吗?
标签: c# json reflection json.net deserialization