JSon.Net JObject.FromObject 与 JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(obj)) 的区别

5

我试着寻找上述比较,但没有找到答案。

由于有多种方法可以获得JObject(或继承自JToken的所有子类型) 例如:

方法1

. JObject.FromObject(obj);

方法2

. JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(obj));

在Method1和Method2中,哪个方法表现更好?

我的用例与将一组实体备份到文本文件中并将其恢复有关。


如果你担心性能问题,你应该在自己的环境中进行基准测试以找出答案。 - Brian Rogers
2个回答

17

这更快:

JObject.FromObject(obj);

它直接从对象构建JObject。另一个方法将对象序列化为JSON字符串,然后解析JSON以构建JObject。

文档:JObject.FromObject


1
我进行了一些测试。随着 obj 的大小增加,JObject.FromObject(obj) 显示出更好的结果。对于小的 objs(具有大约 20 个属性且最小或没有嵌套的 jobjects),两种方法显示类似的结果。感谢 @James。将在可能的情况下使用 JObject.FromObject。 - maicalal

1
如果您查看这里那里的源代码,两种方法都使用jsonSerializer。因此它应该是完全相同的。

感谢@Florian的快速回复。由于完成同一任务有多种方法,因此想知道是否存在任何隐藏的含义。 - maicalal
JToken.FromObject 不会将数据转储为字符串,而是使用 JTokenWriter,因此它应该比将其转储为字符串再转回来更快。 - vittore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接