【问题标题】:JSon.Net JObject.FromObject Vs JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(obj));JSon.Net JObject.FromObject 与 JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(obj));
【发布时间】:2014-01-18 09:28:31
【问题描述】:

我尝试查找上述比较但找不到答案。

因为有多种方法可以获取 JObject(或从 JToken 继承的所有子类型) 例如:

方法1

JObject.FromObject(obj);

方法二

JsonConvert.DeserializeObject&lt;JObject&gt;(JsonConvert.SerializeObject(obj));

Method1 会比 Method2 表现更好吗?

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

【问题讨论】:

  • 如果您担心性能,您应该在自己的环境中进行基准测试以找出答案。

标签: c# json.net json-deserialization


【解决方案1】:

这样更快:

JObject.FromObject(obj);

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

文档:JObject.FromObject

【讨论】:

  • 我做了一些测试。随着 obj 大小的增加,JObject.FromObject(obj) 显示出更好的结果。对于小型 objs(具有 20 个左右属性且嵌套最少或没有嵌套的 jobjects),两种方法都显示出相似的结果。谢谢@詹姆斯。将尽可能使用 JObject.FromObject。
【解决方案2】:

如果查看源代码herethere,这两种方法都使用jsonSerializer。所以应该是一样的。

【讨论】:

  • 感谢@Florian 的快速回复。由于有多种方法可以完成相同的工作,所以想知道是否有任何隐藏的含义。
  • JToken.FromObject 从不将数据转储到字符串,而是使用 JTokenWriter,因此它应该比将数据转储到字符串并返回更快。
猜你喜欢
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多