在.NET世界中,当谈到对象序列化时,它通常用于在运行时检查对象的字段和属性.对此作业使用反射通常很慢,并且在处理大量对象时是不合需要的.另一种方法是使用IL发射或构建表达树,这些表现树相对于反射提供显着的性能增益.而后者是处理序列化时最现代化的库.但是,在运行时构建和发送IL需要花费时间,并且只有在将此信息缓存并重用于相同类型的对象时才会回收投资.
当使用Json.NET时,我不清楚使用上述哪种方法,如果确实使用了后者,是否使用了缓存.
例如,当我这样做时:
JsonConvert.SerializeObject(new Foo { value = 1 });
Run Code Online (Sandbox Code Playgroud)
Json.NET是否构建了Foo的成员访问信息并缓存以便以后重用它?
在json反序列化攻击中观看此视频,它显示了这一点json,可用于在任何反序列化它的应用程序上触发任意代码执行.
现在在我的应用程序中,我甚至从未使用过类型的json.我总是反序列化为动态对象或JObjects.在$type今天早上另一次无关的谈话之前,我甚至都不知道这个房产.
在我的json设置中是否有一种方法可以告诉它永远不会写或读取此属性?这不是我想要的东西.