序列化和反序列化如何在内部工作?

时间:2012-05-30 21:18:58

标签: c# .net json json.net

我有很多遗留代码,其中json通过使用for循环手动解析。这通常需要O(n)次。我知道json.nettimespace方面会更好,但能够深入了解它是如何运作的,这将有助于我做出明智的决定是否值得努力实现投入时间和人力将一切都转移到json.net。

1 个答案:

答案 0 :(得分:2)

为了将您的问题解释为更一般的问题,我们假设您正在寻找有关为各种情况选择哪种JSON序列化实现的建议。

我知道这个问题有三个明显的答案:

  • NewtonSoft JSON.NET
    • 提供丰富的功能和卓越的性能
  • ServiceStack.Text
    • 提供简单和卓越的性能
  • BCL JsonSerializer
    • 避免第三方库依赖,但速度明显较慢

如果您不关心第三方库依赖关系,请选择第一个选项,因为它会为您提供性能和功能。如果您不需要大量功能,请评估ServiceStack.Text是否满足您的需求(如果不确定,请使用JSON.NET)。在任何其他情况下,坚持你拥有的。

此外,在您知道此特定区域是性能瓶颈(或以其他方式保证更换,例如因为它是维护问题)之前,请不要花时间更换您的JSON代码。如果您正在考虑更换代码以获得性能,请使用备用实现或库隔离一些方法来分析和比较当前代码与类似方案,以避免根据假设做出决策。

最后,了解内部如何运作不应成为您决策过程中的一个因素,除非您专门计划修改其来源(或者需要能够理解它)。